--- - name: Configure NetworkManager [ type loopback ] community.general.nmcli: autoconnect: "{{ connection.autoconnect | default('true') }}" conn_name: "{{ connection.con_name | default('lo') }}" ifname: "{{ connection.ifname | default('lo') }}" type: "{{ connection.type }}" ip4: "{{ connection.ip4 | default('') }}" dns4: "{{ connection.dns4 | default([]) }}" method4: "{{ connection.method4 | default('manual') }}" method6: "{{ connection.method6 | default('auto') }}" state: present with_items: "{{ network }}" when: connection.type == 'loopback' loop_control: loop_var: connection notify: Restart NetworkManager - name: Configure NetworkManager [ type ethernet ] community.general.nmcli: "{{ connection_params | combine(dynamic_params) }}" with_items: "{{ network }}" when: connection.type == 'ethernet' loop_control: loop_var: connection vars: connection_params: autoconnect: "{{ connection.autoconnect | default('true') }}" conn_name: "{{ connection.con_name }}" ifname: "{{ connection.ifname | default(connection.con_name) }}" type: "{{ connection.type }}" state: "{{ connection.state | default('present') }}" dynamic_params: >- {{ dict( ip4=connection.ip4 if connection.ip4 is defined else omit, gw4=connection.gw4 if connection.gw4 is defined else omit, dns4=connection.dns4 if connection.dns4 is defined else omit, routes4=connection.routes4 if connection.routes4 is defined else omit, method4=connection.method4 if connection.method4 is defined else 'disabled', ip6=connection.ip6 if connection.ip6 is defined else omit, gw6=connection.gw6 if connection.gw6 is defined else omit, method6=connection.method6 if connection.method6 is defined else 'disabled' ) }} notify: Restart NetworkManager # notify: # - networking changed # - network-manager configuration changed