# {{ ansible_managed }} [Unit] Description=nspawn macvlan service After=syslog.target After=network.target [Service] Type=oneshot User=root RemainAfterExit=yes {% set seen_start_interfaces = [] %} {% for key, value in (container_networks | combine(nspawn_networks)).items() %} {% set interface = value.bridge.split('br-')[-1] %} {% set mv_interface = 'mv-' + interface %} {% if value.bridge not in seen_start_interfaces %} {% set interface_from_ansible = 'ansible_' + value.bridge | replace('-', '_') %} {% if hostvars[inventory_hostname][interface_from_ansible]['type'] == 'bridge' %} ExecStart=-/sbin/ip link add dev "veth-{{ interface }}1" type veth peer name "veth-{{ interface }}2" ExecStart=-/sbin/ip link set dev "veth-{{ interface }}1" up ExecStart=-/sbin/ip link set dev "veth-{{ interface }}2" up ExecStart=-/sbin/ip link set "veth-{{ interface }}1" master "{{ value.bridge }}" ExecStart=-/sbin/ip link add "{{ mv_interface }}" link "veth-{{ interface }}2" type macvlan mode {{ nspawn_macvlan_mode }} {% else %} ExecStart=-/sbin/ip link add "{{ mv_interface }}" link "{{ value.bridge }}" type macvlan mode {{ nspawn_macvlan_mode }} {% endif %} {% set _ = seen_start_interfaces.append(value.bridge) %} {% endif %} {% endfor %} [Install] WantedBy=multi-user.target