--- - name: network-interfaces | Manage additional network interfaces, Ubuntu style tags: - network_interface - networking when: - ansible_distribution == 'Ubuntu' - ubuntu_configure_additional_interfaces block: - name: network-interfaces | Check if netplan is in use ansible.builtin.stat: path: /etc/netplan register: netplan_in_use - name: network-interfaces | Check if additional interfaces have been defined ansible.builtin.set_fact: net_ints: '{% for i in ansible_interfaces %}{% if i != ansible_lo.device and i != ansible_default_ipv4.interface %}"{{ i }}"{% if not loop.last %},{% endif %}{% endif %}{% endfor %}' when: netplan_in_use.stat.isdir - name: network-interfaces | Create a dictionary of additional interfaces ansible.builtin.set_fact: new_ints: '[{% for i in ansible_interfaces %}{% if i != ansible_lo.device and i != ansible_default_ipv4.interface %}"{{ i }}"{% if not loop.last %},{% endif %}{% endif %}{% endfor %}]' when: net_ints is defined and net_ints | length != 0 - name: network-interfaces | Print the loopback interface name ansible.builtin.debug: msg: "Loopback interface: {{ ansible_lo.device }}" - name: network-interfaces | Print the name of the default interface ansible.builtin.debug: msg: "Loopback interface: {{ ansible_default_ipv4.interface }}" - name: network-interfaces | List of interfaces other than the default one ansible.builtin.debug: msg: "Interfaces list: {{ new_ints }}" - name: network-interfaces | Override the interfaces list ansible.builtin.set_fact: new_ints: "{{ ubuntu_configure_additional_ints_list }}" when: ubuntu_configure_additional_ints_list | length != 0 - name: network-interfaces | List of interfaces that we are going to configure ansible.builtin.debug: msg: "Interfaces list: {{ new_ints }}" when: ubuntu_configure_additional_ints_list | length != 0 - name: network-interfaces | Install the network interface file ansible.builtin.template: src: netplan-70-ansible.yaml.j2 dest: /etc/netplan/70-ansible.yaml owner: root group: root mode: "0644" when: new_ints | length != 0 notify: Netplan Apply - name: network-interfaces | Force the Netplan Apply command execution ansible.builtin.meta: flush_handlers tags: - network_interface - networking