--- - 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 or 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 or i != ansible_default_ipv4.interface %}{{ i }}{% if not loop.last %},{% endif %}{% endif %}{% endfor %}]" when: net_ints is not defined or net_ints == None or net_ints | length == 0 - name: network-interfaces | Install the network interface file ansible.builtin.template: src: 70-ansible.yaml.j2 dest: /etc/netplan/70-ansible.yaml owner: root group: root mode: "0644" when: net_ints is not defined or net_ints == None or net_ints | length == 0 notify: Netplan Apply