################################################################################
# This file is managed via PTC infrastructure orchestration.                   #
# Check https://gitlab.ptc-telematik.de/infrastructure/infrastructure-hetzner. #
# !!! MANUAL CHANGES WILL BE OVERWRITTEN !!!                                   #
################################################################################

## Hetzner Documentation:
## https://docs.hetzner.com/de/robot/dedicated-server/network/vswitch/#beispielkonfiguration-debian

{% for hetzner_vswitch_key, hetzner_vswitch in vswitch_vswitches.items() %}
{% set hetzner_vswitch_interface = ansible_default_ipv6.interface %}
{% set hetzner_vswitch_ip = vars['hetzner_vswitch_ip_' + hetzner_vswitch_key] %}
## vSwitch '{{ hetzner_vswitch_key }}'
auto {{ hetzner_vswitch_interface }}.{{ hetzner_vswitch.vlan }}
{% if hetzner_vswitch_ip is defined %}
iface {{ hetzner_vswitch_interface }}.{{ hetzner_vswitch.vlan }} inet static
  address {{ hetzner_vswitch_ip | ansible.utils.ipaddr('address') }}
  netmask {{ hetzner_vswitch_ip | ansible.utils.ipaddr('netmask') }}
{% else %}
iface {{ hetzner_vswitch_interface }}.{{ hetzner_vswitch.vlan }} inet manual
{% endif %}
  vlan-raw-device {{ hetzner_vswitch_interface }}
  mtu 1400
{% if hetzner_vswitch.routes is defined %}
{% for route in hetzner_vswitch.routes %}
  up ip route add {{ route.to }} via {{ route.via }} dev {{ hetzner_vswitch_interface }}.{{ hetzner_vswitch.vlan }}
{% endfor %}
{% endif %}

{% endfor %}
