Merge "Allow to apply only overrides to the network interface"

This commit is contained in:
Zuul 2025-02-05 10:39:16 +00:00 committed by Gerrit Code Review
commit 52490d39d1
5 changed files with 94 additions and 4 deletions

View File

@ -132,7 +132,14 @@ systemd_netdevs: []
# config_overrides:
# Network:
# ConfigureWithoutCarrier: true
# - interface: "bond1"
# network_overrides_only: True
# config_overrides:
# Network:
# VLAN:
# ? 100
# ? 200
# filename: 10-netplan-bond1
systemd_networks: []
# The systemd resolved service can be setup using th following configuration.

View File

@ -0,0 +1,9 @@
---
features:
- |
Implemented flag ``network_overrides_only`` which is applicable to
``systemd_networks``. When this flag is used no .network or .link
defenition is created - only ``{{ filename }}.network.d/overrides.conf``
configuration file, which contains arbitrary data from ``config_overrides``
This can be used to extend existing interface configuration, which is not
managed by the role directly (ie managed through ``netplan``).

View File

@ -166,7 +166,11 @@
mode: "0644"
config_overrides: "{{ item.1.link_config_overrides | default(systemd_link_config_overrides) }}"
config_type: "ini"
with_indexed_items: "{{ _systemd_networks_named }}"
with_indexed_items: >-
{{
_systemd_networks_named | rejectattr('network_overrides_only', 'defined') +
_systemd_networks_named | selectattr('network_overrides_only', 'defined') | selectattr('network_overrides_only', 'false')
}}
notify:
- Update initramfs
- Restart systemd-networkd
@ -182,7 +186,11 @@
mode: "0644"
config_overrides: "{{ item.1.config_overrides | default({}) }}"
config_type: "ini"
with_indexed_items: "{{ _systemd_networks_named }}"
with_indexed_items: >-
{{
_systemd_networks_named | rejectattr('network_overrides_only', 'defined') +
_systemd_networks_named | selectattr('network_overrides_only', 'defined') | selectattr('network_overrides_only', 'false')
}}
notify:
- Restart systemd-networkd
tags:
@ -195,7 +203,28 @@
group: "root"
mode: "0755"
state: directory
loop: "{{ _systemd_networks_named | selectattr('static_routes', 'defined') | map(attribute='filename') }}"
loop: >-
{{
(
_systemd_networks_named | selectattr('static_routes', 'defined') +
_systemd_networks_named | selectattr('network_overrides_only', 'defined') | selectattr('network_overrides_only', 'true')
) | map(attribute='filename')
}}
- name: Create overrides files for network_overrides_only networks
openstack.config_template.config_template:
dest: "/etc/systemd/network/{{ item.1.filename }}.network.d/overrides.conf"
owner: "root"
group: "root"
mode: "0644"
config_overrides: "{{ item.1.config_overrides | default({}) }}"
config_type: "ini"
with_indexed_items: >-
{{ _systemd_networks_named | selectattr('network_overrides_only', 'defined') | selectattr('network_overrides_only', 'true') }}
notify:
- Restart systemd-networkd
tags:
- systemd-networkd
- name: Place systemd-networkd routing policy rules
ansible.builtin.template:

View File

@ -49,12 +49,25 @@
- NetDev:
Name: dummy2
Kind: dummy
- NetDev:
Name: dummy3
Kind: dummy
- NetDev:
Name: br-test
Kind: bridge
- NetDev:
Name: br-test2
Kind: bridge
- NetDev:
Name: vlan-100
Kind: vlan
VLAN:
Id: 100
- NetDev:
Name: vlan-200
Kind: vlan
VLAN:
Id: 200
systemd_networks:
- interface: "dummy0"
bond: "bond0"
@ -88,6 +101,8 @@
Alias: "dummy-bridge0"
- interface: "dummy2"
bridge: "br-test"
- interface: "dummy3"
bridge: "br-test2"
- interface: "br-test"
address: "10.1.0.1"
netmask: "255.255.255.0"
@ -95,3 +110,19 @@
address: 10.2.0.1
netmask: "255.255.255.0"
ipforward: true
vlan:
- vlan-100
filename: 6-general-br-test2
- interface: "br-test2"
filename: 6-general-br-test2
network_overrides_only: true
config_overrides:
Network:
VLAN:
? vlan-200
- interface: "vlan-100"
address: 10.3.0.1
netmask: "255.255.255.0"
- interface: "vlan-200"
address: 10.4.0.1
netmask: "255.255.255.0"

View File

@ -47,6 +47,20 @@
- ansible_facts['br_test']['type'] == 'bridge'
- ansible_facts['br_test']['ipv4']['address'] == '10.1.0.1'
- ansible_facts['br_test']['ipv4']['netmask'] == '255.255.255.0'
- name: Vlan 100 check
assert:
that:
- ansible_facts['vlan_100']['active']
- ansible_facts['vlan_100']['type'] == 'ether'
- ansible_facts['vlan_100']['ipv4']['address'] == '10.3.0.1'
- ansible_facts['vlan_100']['ipv4']['netmask'] == '255.255.255.0'
- name: Vlan 200 check
assert:
that:
- ansible_facts['vlan_200']['active']
- ansible_facts['vlan_200']['type'] == 'ether'
- ansible_facts['vlan_200']['ipv4']['address'] == '10.4.0.1'
- ansible_facts['vlan_200']['ipv4']['netmask'] == '255.255.255.0'
- name: Check link config overrides
shell: 'grep -wo "Alias" /etc/systemd/network/*br-dummy.link'
changed_when: false