db6677a867
In I32fb17bae98f13f735da4d5b9a6a01e948f21678, the evaluated facts should also fallback to public_ipv4, when private_ipv4 is "empty-like", e.g. contains no valid IP but something like '\n'. It also restores the lost switch_private_ip fact just in case. Change-Id: I139272746129213994f298a4a9178b4441d439af Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com>
86 lines
2.9 KiB
YAML
86 lines
2.9 KiB
YAML
---
|
|
# This dynamically configures a unique offset for this peer
|
|
- name: Set offset
|
|
set_fact:
|
|
offset: "{{ bridge_address_offset | int + 1 + groups['peers'].index(inventory_hostname) }}"
|
|
|
|
- name: Add additional vni offset
|
|
set_fact:
|
|
vni: "{{ offset | int + bridge_vni_offset | int }}"
|
|
|
|
# To make things more readable in the following tasks
|
|
- name: Set ip address when the node private IP looks empty
|
|
set_fact:
|
|
nodepool_ip: "{{ nodepool.public_ipv4 }}"
|
|
when: not (nodepool.private_ipv4 | ipv4)
|
|
|
|
- name: Set ip address when the node private IP was not defined
|
|
set_fact:
|
|
nodepool_ip: |
|
|
{{ nodepool.private_ipv4 | default(nodepool.public_ipv4) }}
|
|
when: nodepool_ip is not defined
|
|
|
|
- name: Select the switch from group and the private ip
|
|
set_fact:
|
|
switch: "{{ groups['switch'][0] }}"
|
|
switch_private_ip: "{{ hostvars[groups['switch'][0]].nodepool.private_ipv4 }}"
|
|
|
|
- name: Alias the primary node private IP, if it looks empty
|
|
set_fact:
|
|
switch_ip: "{{ hostvars[switch].nodepool.public_ipv4 }}"
|
|
when: not (switch_private_ip | ipv4)
|
|
|
|
- name: Alias the primary node private IP, if it was not defined
|
|
set_fact:
|
|
switch_ip: "{{ switch_private_ip | default(hostvars[switch].nodepool.public_ipv4) }}"
|
|
when: switch_ip is not defined
|
|
|
|
- name: Add port to bridge on switch node
|
|
become: yes
|
|
command: >-
|
|
ovs-vsctl --may-exist add-port {{ bridge_name }}
|
|
{{ bridge_name }}_{{ nodepool_ip }}
|
|
-- set interface {{ bridge_name }}_{{ nodepool_ip }}
|
|
type=vxlan options:remote_ip={{ nodepool_ip }} options:key={{ vni }}
|
|
options:local_ip={{ switch_ip }}
|
|
delegate_to: "{{ switch }}"
|
|
|
|
- name: Create bridge on peer node
|
|
become: yes
|
|
openvswitch_bridge:
|
|
bridge: "{{ bridge_name }}"
|
|
|
|
- name: Set MTU on peer node bridge
|
|
become: yes
|
|
command: ip link set mtu {{ bridge_mtu }} dev {{ bridge_name }}
|
|
|
|
- name: Add port to bridge on peer node
|
|
become: yes
|
|
command: >-
|
|
ovs-vsctl --may-exist add-port {{ bridge_name }}
|
|
{{ bridge_name }}_{{ switch_ip }}
|
|
-- set interface {{ bridge_name }}_{{ switch_ip }}
|
|
type=vxlan options:remote_ip={{ switch_ip }} options:key={{ vni }}
|
|
options:local_ip={{ nodepool_ip }}
|
|
|
|
- when: bridge_configure_address
|
|
block:
|
|
- name: Verify if the bridge address is set
|
|
shell: ip addr show dev {{ bridge_name }} | grep -q {{ bridge_address_prefix }}.{{ offset }}/{{ bridge_address_subnet }}
|
|
environment:
|
|
PATH: '{{ ansible_env.PATH }}:/bin:/sbin:/usr/sbin'
|
|
register: ip_addr_var
|
|
failed_when: False
|
|
changed_when: False
|
|
|
|
- name: Set the bridge address
|
|
become: yes
|
|
command: ip addr add {{ bridge_address_prefix }}.{{ offset }}/{{ bridge_address_subnet }} dev {{ bridge_name }}
|
|
environment:
|
|
PATH: '{{ ansible_env.PATH }}:/bin:/sbin:/usr/sbin'
|
|
when: ip_addr_var.rc == 1
|
|
|
|
- name: Bring subnode bridge interface up
|
|
become: yes
|
|
command: ip link set dev {{ bridge_name }} up
|