298354d2e3
There are a number of updates we make for Ubuntu Noble in this commit. 1. Remove python2-dev from bindep for Noble as Noble appears to have no python2 runtime options. 2. Add libjpeg-dev to bindep for noble because Pillow doesn't build python3.12 wheels for Pillow<10 which we currently depend on. This means we need to build from source and that depends on libjpeg-dev. 3. We remove double bracket wrappers from ansible vars in ansible assertion blocks. Having them results in errors like: Conditional is marked as unsafe, and cannot be evaluated. 4. We update rust testing to explicitly install pkg-config before building python cryptography. This tool is required to build cryptography from source and is no longer being pulled in either by the base images or build-essential meta pacakge. 5. Add an Ubuntu-24.04 tasks file for the ensure-skopeo roles so that we try to install skopeo using distro packages or build from source and don't use Kubic which only has packages for old Ubuntu releases. Change-Id: I388710ce40dc757ada4de819a9c3c59fc32fb07a
97 lines
3.6 KiB
YAML
97 lines
3.6 KiB
YAML
- name: Test the persistent-firewall role
|
|
hosts: all
|
|
roles:
|
|
# We're including multi-node-bridge a second time with the toggle for
|
|
# enabling firewall rules for the bridge network subnet
|
|
# By this time, multi-node-firewall has already ran, we don't need to run
|
|
# it again -- we're testing here that both are persisted properly.
|
|
- { role: multi-node-bridge, bridge_authorize_internal_traffic: true }
|
|
post_tasks:
|
|
# NOTE (dmsimard): Using with_first_found and include_vars can yield
|
|
# unexpected results, see multinode_firewall_persistence_vars/README.rst
|
|
- name: Include OS-specific variables
|
|
include_vars: "{{ item }}"
|
|
with_first_found:
|
|
- "multinode_firewall_persistence_vars/{{ ansible_distribution }}_{{ ansible_distribution_release }}.yaml"
|
|
- "multinode_firewall_persistence_vars/{{ ansible_distribution }}.yaml"
|
|
- "multinode_firewall_persistence_vars/{{ ansible_os_family }}.yaml"
|
|
- "multinode_firewall_persistence_vars/default.yaml"
|
|
|
|
- name: Flush iptables rules
|
|
become: yes
|
|
command: "{{ item }}"
|
|
with_items:
|
|
- iptables --flush
|
|
- ip6tables --flush
|
|
|
|
# NOTE (dmsimard): We're using with_items here because RedHat and Gentoo
|
|
# need to restart both iptables and ip6tables.
|
|
- name: Restart iptables
|
|
become: yes
|
|
service:
|
|
name: "{{ item }}"
|
|
state: restarted
|
|
when: iptables_service is defined
|
|
with_items: "{{ iptables_service }}"
|
|
|
|
# If there is no iptables service (ie on opensuse), run the rc file to apply the rules
|
|
- name: Check for boot.local
|
|
stat:
|
|
path: /etc/init.d/boot.local
|
|
register: boot_local_file
|
|
when: ansible_os_family == "Suse"
|
|
|
|
- name: Restore iptables
|
|
become: yes
|
|
command: "/etc/init.d/boot.local"
|
|
when:
|
|
- ansible_os_family == "Suse"
|
|
- iptables_service is not defined
|
|
- boot_local_file.stat.exists
|
|
|
|
- name: switch and peer nodes should be in the ipv4 firewall
|
|
become: yes
|
|
command: iptables-save
|
|
changed_when: false
|
|
failed_when: false
|
|
register: iptables_rules
|
|
|
|
- name: Validate ipv4 private firewall configuration
|
|
assert:
|
|
that:
|
|
- "'-A INPUT -s ' + hostvars[item]['nodepool']['private_ipv4'] + '/32 -j ACCEPT' in iptables_rules.stdout"
|
|
with_items: "{{ groups['all'] }}"
|
|
when:
|
|
- hostvars[item]['nodepool']['private_ipv4']
|
|
|
|
- name: Validate ipv4 public firewall configuration
|
|
assert:
|
|
that:
|
|
- "'-A INPUT -s ' + hostvars[item]['nodepool']['public_ipv4'] + '/32 -j ACCEPT' in iptables_rules.stdout"
|
|
with_items: "{{ groups['all'] }}"
|
|
when:
|
|
- hostvars[item]['nodepool']['public_ipv4']
|
|
|
|
- name: Validate ipv4 bridge firewall configuration
|
|
assert:
|
|
that:
|
|
- "'-A INPUT -s ' + bridge_address_prefix + '.0/' + bridge_address_subnet | string + ' -d ' + bridge_address_prefix + '.0/' + bridge_address_subnet | string + ' -j ACCEPT' in iptables_rules.stdout"
|
|
with_items: "{{ groups['all'] }}"
|
|
|
|
# ipv6_addresses is set by the multi-node-firewall role
|
|
- name: check ipv6_addresses
|
|
when: ipv6_addresses | length > 0
|
|
block:
|
|
- name: switch and peer nodes should be in the ipv6 firewall
|
|
become: yes
|
|
command: ip6tables-save
|
|
changed_when: false
|
|
failed_when: false
|
|
register: ip6tables_rules
|
|
|
|
- name: Validate ipv6 firewall configuration
|
|
assert:
|
|
that:
|
|
- "'-A INPUT -s ' + hostvars[item]['nodepool']['public_ipv6'] + '/128 -j ACCEPT' in ip6tables_rules.stdout"
|
|
with_items: "{{ groups['all'] }}"
|