Clark Boylan 7682f2fb5b Cap the ansible version used by ansible-lint
the openvswitch.openvswitch collection is removed from Ansible packages
starting with Ansible 11. This causes ansible-lint to correctly not find
the openvswitch_bridge module when ansible-lint runs with Ansible 11.
Workaround this by capping Ansible used by ansible-lint to <10 and leave
a note about the module going away where we use it.

Change-Id: Id2d4e4f59c7d7e595c5458bc8717146c2326c573
2024-11-19 14:27:44 -08:00

88 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
# TODO Ansible 11 removes this module
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 }}
- name: Configure bridge address
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