#- name: "Create base network configuration" # copy: # src: files/etc/network/interfaces # dest: /etc/network/interfaces # owner: root # group: root # mode: 00644 # tags: # - network_interfaces - name: "Create systemd interface files" ansible.builtin.template: src: templates/etc/systemd/network/link.j2 dest: "/etc/systemd/network/10-{{ interface.name }}-nic.link" owner: root group: root mode: '0644' loop: "{{ interfaces }}" loop_control: loop_var: interface vars: interfaces: "{{ network.interfaces | default([]) | selectattr('bridge', 'undefined') }}" register: network_systemd_interface tags: - network_systemd_interface when: network.skip | default(False) != True - name: "Build split network configuration (interfaces)" ansible.builtin.template: src: templates/etc/network/interfaces.d/interface.j2 dest: "/etc/network/interfaces.d/{{ interface.name }}" owner: root group: root mode: '0644' loop: "{{ interfaces }}" loop_control: loop_var: interface vars: interfaces: "{{ network.interfaces | default([]) }}" interface_network: "{{ interface.network | default(False) }}" register: network_interfaces_split when: network.skip | default(False) != True and network.single_file | default(False) == False tags: - network_interfaces - name: "Build split network configuration (main)" ansible.builtin.template: src: templates/etc/network/interfaces.j2 dest: "/etc/network/interfaces" owner: root group: root mode: '0644' vars: interfaces: "{{ [] }}" register: network_interfaces_split_main when: network.skip | default(False) != True and network.single_file | default(False) == False tags: - network_interfaces - name: "Build combined network configuration" ansible.builtin.template: src: templates/etc/network/interfaces.j2 dest: "/etc/network/interfaces" owner: root group: root mode: '0644' vars: interfaces: "{{ network.interfaces | default([]) }}" register: network_interfaces_single when: network.skip | default(False) != True and network.single_file | default(False) == True tags: - network_interfaces - name: "Remove split network configuration files" ansible.builtin.file: path: "/etc/network/interfaces.d/{{ interface.name }}" state: absent loop: "{{ interfaces }}" loop_control: loop_var: interface vars: interfaces: "{{ network.interfaces | default([]) }}" interface_network: "{{ interface.network | default(False) }}" register: network_interfaces_split_removed when: network.skip | default(False) != True and network.single_file | default(False) == True tags: - network_interfaces - name: "Restart networking" ansible.builtin.systemd: name: networking daemon_reload: true state: restarted when: network.skip | default(False) != True and (network_systemd_interface.changed or network_interfaces_split.changed or network_interfaces_split_main.changed or network_interfaces_single.changed or network_interfaces_split_removed.changed) tags: - network_restart - name: "Configure /etc/resolv.conf" ansible.builtin.template: src: templates/etc/resolv.conf.j2 dest: /etc/resolv.conf owner: root group: root mode: '0644' follow: yes vars: domain: "{{ network.domain | default('local') }}" search_domains: "{{ network.search_domains | default([domain]) }}" nameservers: "{{ network.nameservers | default(['9.9.9.9', '149.112.112.112']) }}" when: network.skip | default(False) != True tags: - network_resolv_conf