34 lines
1.3 KiB
Django/Jinja
34 lines
1.3 KiB
Django/Jinja
# {{ 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
|