Merge "Update cleanup process and set a file prefix"

This commit is contained in:
Zuul 2018-05-21 05:03:36 +00:00 committed by Gerrit Code Review
commit 305db5348e
4 changed files with 88 additions and 33 deletions

View File

@ -13,15 +13,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# Cleanup all known network interfaces
# Cleanup all known network interfaces. When this option is enabled the role
# will search for and remove all network interface files that match the prefix.
systemd_interface_cleanup: false
# Prefix for all networkd files created by this role. This prefix allows
# deployers to set specific file names reducing the chance of a collision
# and simplifies the network interface file cleanup operation should it ever
# be needed. By default, the prefix is "general" however this can be changed
# to meet the needs of the deployer.
systemd_networkd_prefix: "general"
# Enable systemd-networkd and (re)start the service
systemd_run_networkd: false
# Default filename formatting
systemd_networkd_netdev_filename: "{{ item.0 }}-{{ item.1.NetDev.Name }}.netdev"
systemd_networkd_network_filename: "{{ item.0 }}-{{ item.1.interface }}.network"
systemd_networkd_netdev_filename: "{{ item.0 }}-{{ systemd_networkd_prefix }}-{{ item.1.NetDev.Name }}.netdev"
systemd_networkd_network_filename: "{{ item.0 }}-{{ systemd_networkd_prefix }}-{{ item.1.interface }}.network"
# The `systemd_link_config_overrides` option can be used on the default link.
# See the following link for all available options:

View File

@ -61,18 +61,6 @@
tags:
- systemd-networkd
- name: Create systemd-networkd interface cleanup script
template:
src: "interface-cleanup.sh.j2"
dest: "/usr/local/bin/interface-cleanup"
owner: "root"
group: "root"
mode: "0750"
when:
- systemd_interface_cleanup | bool
tags:
- systemd-networkd
- name: Create systemd-resolved config
template:
src: "systemd-resolved.conf.j2"
@ -87,14 +75,28 @@
tags:
- systemd-resolved
- name: Run interface cleanup script
command: "/usr/local/bin/interface-cleanup"
failed_when: false
- name: Find prefixed netdev and network files
find:
paths: "/etc/systemd/network"
patterns: "*{{ systemd_networkd_prefix }}*.netdev,*{{ systemd_networkd_prefix }}*.network"
register: networkd_files
when:
- systemd_interface_cleanup | bool
tags:
- systemd-networkd
- name: Remove prefixed network files
file:
path: "{{ item.path }}"
state: absent
with_items: "{{ networkd_files.files }}"
when:
- systemd_interface_cleanup | bool
notify:
- Restart systemd-networkd
tags:
- systemd-networkd
- name: Create systemd-networkd network device(s)
template:
src: "systemd-netdev.j2"

View File

@ -1,15 +0,0 @@
#!/usr/bin/env bash
# {{ ansible_managed }}
{% for item in systemd_netdevs %}
if [[ -f "/etc/systemd/network/{{ loop.index }}-{{ item.NetDev.Name }}.netdev" ]]; then
rm -f "/etc/systemd/network/{{ loop.index }}-{{ item.NetDev.Name }}.netdev"
fi
{% endfor %}
{% for item in systemd_networks %}
if [[ -f "/etc/systemd/network/{{ loop.index }}-{{ item.interface }}.network" ]]; then
rm -f "/etc/systemd/network/{{ loop.index }}-{{ item.interface }}.network"
fi
{% endfor %}

View File

@ -50,6 +50,12 @@
- NetDev:
Name: br-dummy
Kind: bridge
- NetDev:
Name: dummy2
Kind: dummy
- NetDev:
Name: br-test
Kind: bridge
systemd_networks:
- interface: "dummy0"
bond: "bond0"
@ -72,6 +78,12 @@
config_overrides:
Network:
ConfigureWithoutCarrier: true
- interface: "dummy2"
bridge: "br-test"
- interface: "br-test"
address: "10.1.0.1"
netmask: "255.255.255.0"
- name: Test networkd
hosts: localhost
@ -88,6 +100,8 @@
- ansible_dummy1['active'] == true
- ansible_dummy1['type'] == 'ether'
- ansible_dummy1['mtu'] == 9000
- ansible_dummy2['active'] == true
- ansible_dummy2['type'] == 'ether'
- name: Bond check
assert:
that:
@ -101,3 +115,49 @@
- ansible_br_dummy['type'] == 'bridge'
- ansible_br_dummy['ipv4']['address'] == '10.0.0.100'
- ansible_br_dummy['ipv4']['netmask'] == '255.255.255.0'
- name: Bridge check
assert:
that:
- ansible_br_test['active'] == true
- ansible_br_test['type'] == 'bridge'
- ansible_br_test['ipv4']['address'] == '10.1.0.1'
- ansible_br_test['ipv4']['netmask'] == '255.255.255.0'
- name: Playbook for role testing with cleanup
hosts: localhost
connection: local
become: true
gather_facts: true
roles:
- role: "systemd_networkd"
post_tasks:
- name: Interface check
assert:
that:
- ansible_br_test is defined
- ansible_dummy2['active'] == true
- ansible_dummy2['type'] == 'ether'
- name: Bridge check
assert:
that:
- ansible_br_test['active'] == true
- ansible_br_test['type'] == 'bridge'
- ansible_br_test['ipv4']['address'] == '10.1.0.1'
- ansible_br_test['ipv4']['netmask'] == '255.255.255.0'
vars:
systemd_interface_cleanup: true
systemd_run_networkd: yes
systemd_netdevs:
- NetDev:
Name: dummy2
Kind: dummy
- NetDev:
Name: br-test
Kind: bridge
systemd_networks:
- interface: "dummyX"
bridge: "br-test"
- interface: "br-test"
address: "10.1.0.1"
netmask: "255.255.255.0"