41 lines
1.8 KiB
Django/Jinja
41 lines
1.8 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 %}
|
|
{% if value.private_device | default(false) | bool %}
|
|
ExecStart=-/sbin/ip link add dev "{{ value.bridge }}" type dummy
|
|
ExecStart=-/sbin/ip link set dev "{{ value.bridge }}" up
|
|
{% endif %}
|
|
{% set interface_from_ansible = 'ansible_' + value.bridge | replace('-', '_') %}
|
|
{% set interface_data = hostvars[inventory_hostname][interface_from_ansible] | default({'type': none}) %}
|
|
{% if interface_data['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 }}1" mtu {{ interface_data['mtu'] | default(1500) }}
|
|
ExecStart=-/sbin/ip link set dev "veth-{{ interface }}2" up
|
|
ExecStart=-/sbin/ip link set dev "veth-{{ interface }}2" mtu {{ interface_data['mtu'] | default(1500) }}
|
|
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 {{ value.macvlan_mode | default(nspawn_macvlan_mode) }}
|
|
{% else %}
|
|
ExecStart=-/sbin/ip link add "{{ mv_interface }}" link "{{ value.bridge }}" type macvlan mode {{ value.macvlan_mode | default(nspawn_macvlan_mode) }}
|
|
{% endif %}
|
|
{% set _ = seen_start_interfaces.append(value.bridge) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|