diff --git a/roles/network/tasks/netplan.yml b/roles/network/tasks/netplan.yml new file mode 100644 index 000000000..b05caf8e3 --- /dev/null +++ b/roles/network/tasks/netplan.yml @@ -0,0 +1,66 @@ +# netplan.yml +- name: Figure out netplan file name on Ubuntu 18 + shell: ls /etc/netplan + register: netplan + +- name: Remove stock netplan template + file: + state: absent + dest: /etc/netplan/{{ netplan }} + +# Was needed at one point retesting current needs +#- name: Disable and mask systemd-networkd-wait-online +# systemd: +# name: systemd-networkd-wait-online +# enabled: no +# masked: yes +# state: stopped + +- name: Disable and mask cloud-init + systemd: + name: "{{ item }}" + enabled: no + masked: yes + state: stopped + with_items: + - cloud-init-local + - cloud-init + when: "{{ netplan }}" == "50-cloud-init.yaml" + +# ICO will always set gui_static_wan_ip away from the default of 'unset' while +# gui_static_wan turns dhcp on/off through wan_ip in computed_network and +# overrides gui_static_wan_ip that is present. Changing wan_ip in local_vars +# is a oneway street to static. + +- name: Static IP computing CIDR + shell: netmask {{ wan_ip }}/{{ wan_netmask }} | awk -F "/" '{print $2}' + register: CIDR + when: wan_ip != "dhcp" + +- name: Static IP setting CIDR + set_fact: + wan_cidr: "{{ CIDR.stdout }}" + when: wan_ip != "dhcp" + +- name: Supply netplan template + template: + dest: /etc/netplan/01-iiab-config + src: network/netplan.j2 + backup: no + +- name: Stopping services + include_tasks: down-debian.yml + +- name: generate netplan config + shell: netplan generate --debug + +# wants a controlling terminal so it fails +- name: test netplan config + shell: netplan try --debug --timeout=2 + register: test-netplan + ignore_errors: True + +# and does not apply this config until rebooted or ignore the above test +- name: Reload netplan + shell: netplan apply + when: not no_net_restart and test-netplan == "Configuration accepted" diff --git a/roles/network/templates/network/cloud-init.j2 b/roles/network/templates/network/cloud-init.j2 deleted file mode 100644 index 32fc6f7d0..000000000 --- a/roles/network/templates/network/cloud-init.j2 +++ /dev/null @@ -1,23 +0,0 @@ -{% if wan_ip != "dhcp" %} -network: - ethernets: - {{ iiab_wan_iface }}: - addresses: - - {{ wan_ip }}/{{ wan_cidr }} - gateway4: {{ wan_gateway }} - nameservers: - addresses: - - {{ wan_nameserver }} - search: - - {{ iiab_domain }} - optional: true - version: 2 -{% else %} -network: - ethernets: - {{ iiab_wan_iface }}: - addresses: [] - dhcp4: true - optional: true - version: 2 -{% endif %} diff --git a/roles/network/templates/network/netplan.j2 b/roles/network/templates/network/netplan.j2 new file mode 100644 index 000000000..d54cf748a --- /dev/null +++ b/roles/network/templates/network/netplan.j2 @@ -0,0 +1,41 @@ +network: + version: 2 +{% if network_manager_active %} + renderer: NetworkManager +{% else %} + renderer: networkd +{% endif %} + ethernets: +{% if wan_ip != "dhcp" %} + {{ iiab_wan_iface }}: + addresses: + - {{ wan_ip }}/{{ wan_cidr }} + gateway4: {{ wan_gateway }} + nameservers: + addresses: + - {{ wan_nameserver }} + search: + - {{ iiab_domain }} + optional: true +{% else %} + {{ iiab_wan_iface }}: + addresses: [] + dhcp4: true + optional: true +{% endif %} +{% if iiab_lan_iface == "br0" %} + bridges: + # the key name is the name for virtual (created) interfaces + br0: + # IDs of the components; switchports expands into multiple interfaces + # interfaces: [switchports] + # should really compute the netmask like the wan side + addresses: [ {{ lan_ip }}/19] + # there should really not be a gateway present testing to prove + gateway4: {{ lan_ip }} + nameservers: + addresses: [{{ lan_ip }}] + parameters: + forward-delay: 0 + stp: false +{% endif %}