From 6c8a7b7c66a3d9b9e63016580d12cecb322403a0 Mon Sep 17 00:00:00 2001 From: Lars Beckers <lars.beckers@rwth-aachen.de> Date: Wed, 4 Jul 2018 13:28:26 +0200 Subject: [PATCH] fix some bugs encountered deploying a bond Note: An LACP-based bond cannot be named bond0 in networkd, because it asserts some hidden default bond0 using a round-robin approach. This behavior cannot be overriden by configuration and networkd will not tell you about that. It just won't work. --- networkd/defaults/main.yml | 2 +- networkd/handlers/main.yml | 3 --- networkd/tasks/main.yml | 35 ++++++++++++++++++---------- networkd/templates/bond.network.j2 | 4 ++-- networkd/templates/bridge.network.j2 | 6 +++-- networkd/templates/vlan.network.j2 | 12 +++++----- 6 files changed, 36 insertions(+), 26 deletions(-) diff --git a/networkd/defaults/main.yml b/networkd/defaults/main.yml index a9d2b38..00c368f 100644 --- a/networkd/defaults/main.yml +++ b/networkd/defaults/main.yml @@ -7,7 +7,7 @@ networkd_address: 10.10.10.10/24 networkd_gateway: 10.10.10.1 # for bond type only -networkd_bond: bond0 +networkd_bond: bond1 networkd_bond_devices: [ eth0, eth1 ] networkd_bond_vlans: - id: 23 diff --git a/networkd/handlers/main.yml b/networkd/handlers/main.yml index 1c3361f..19aee0c 100644 --- a/networkd/handlers/main.yml +++ b/networkd/handlers/main.yml @@ -1,8 +1,5 @@ --- -- name: reload systemd service files - systemd: daemon_reload=yes - - name: restart networkd service: name=systemd-networkd state=restarted diff --git a/networkd/tasks/main.yml b/networkd/tasks/main.yml index f788530..d7b4445 100644 --- a/networkd/tasks/main.yml +++ b/networkd/tasks/main.yml @@ -8,7 +8,6 @@ group: root mode: 0644 notify: - - reload systemd service files - restart networkd - name: ensure bonding works correctly @@ -35,6 +34,8 @@ owner: root group: root mode: 0644 + notify: + - restart networkd - name: ensure bond network is configured template: src: bond.network.j2 @@ -42,6 +43,8 @@ owner: root group: root mode: 0644 + notify: + - restart networkd - name: ensure vlan netdevs are configured template: src: vlan.netdev.j2 @@ -49,7 +52,9 @@ owner: root group: root mode: 0644 - with_items: networkd_bond_vlans + with_items: "{{ networkd_bond_vlans }}" + notify: + - restart networkd - name: ensure vlan networks are configured template: src: vlan.network.j2 @@ -57,7 +62,9 @@ owner: root group: root mode: 0644 - with_items: networkd_bond_vlans + with_items: "{{ networkd_bond_vlans }}" + notify: + - restart networkd - name: ensure bridge netdevs are configured template: src: bridge.netdev.j2 @@ -65,8 +72,10 @@ owner: root group: root mode: 0644 - with_items: networkd_bond_vlans - when: item.bridge == yes + with_items: "{{ networkd_bond_vlans }}" + when: item.bridge == True + notify: + - restart networkd - name: ensure bridge networks are configured template: src: bridge.network.j2 @@ -74,14 +83,11 @@ owner: root group: root mode: 0644 - with_items: networkd_bond_vlans - when: item.bridge == yes and 'address' in item + with_items: "{{ networkd_bond_vlans }}" + when: item.bridge == True + notify: + - restart networkd when: networkd_type == 'bond' - notify: - - reload systemd service files - - restart networkd - -- meta: flush_handlers - name: ensure networkd is enabled and running service: @@ -94,6 +100,11 @@ name: networking enabled: no +- name: ensure legacy methods are really disabled + apt: + name: ifupdown + state: absent + - name: ensure we wait for network to be online service: name: systemd-networkd-wait-online diff --git a/networkd/templates/bond.network.j2 b/networkd/templates/bond.network.j2 index aa8627d..0677510 100644 --- a/networkd/templates/bond.network.j2 +++ b/networkd/templates/bond.network.j2 @@ -2,7 +2,7 @@ Name={{ networkd_bond }} [Network] -{%- for vlan in networkd_bond_vlans %} +{% for vlan in networkd_bond_vlans %} VLAN=vl-{{ vlan.name }} -{% endfor -%} +{% endfor %} BindCarrier={{ networkd_bond_devices|join(' ') }} diff --git a/networkd/templates/bridge.network.j2 b/networkd/templates/bridge.network.j2 index 1149208..8fc4ae3 100644 --- a/networkd/templates/bridge.network.j2 +++ b/networkd/templates/bridge.network.j2 @@ -2,7 +2,9 @@ Name=vmbr-{{ item.name }} [Network] +{% if 'address' in item %} Address={{ item.address }} -{%- if item.gateway %} +{% if 'gateway' in item %} Gateway={{ item.gateway }} -{% endif -%} +{% endif %} +{% endif %} diff --git a/networkd/templates/vlan.network.j2 b/networkd/templates/vlan.network.j2 index 959fbc7..79f5a81 100644 --- a/networkd/templates/vlan.network.j2 +++ b/networkd/templates/vlan.network.j2 @@ -2,13 +2,13 @@ Name=vl-{{ item.name }} [Network] -{%- if item.bridge %} +{% if item.bridge %} Bridge=vmbr-{{ item.name }} {% else %} -{%- if item.address %} +{% if 'address' in item %} Address={{ item.address }} -{%- if item.gateway %} +{% if 'gateway' in item %} Gateway={{ item.gateway }} -{% endif -%} -{% endif -%} -{% endif -%} +{% endif %} +{% endif %} +{% endif %} -- GitLab