From 2bc7f22198ba4b21db501d00f1924b3211273194 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 28 Sep 2022 16:30:24 +0200 Subject: import some stuff from helsinki ansible --- .../templates/interfaces/multihomed-base6.j2 | 15 ++++++++++++++ .../templates/interfaces/multihomed-overlay.j2 | 5 +++-- .../templates/interfaces/multihomed-overlay6.j2 | 23 ++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 roles/vm/guest/network/templates/interfaces/multihomed-base6.j2 create mode 100644 roles/vm/guest/network/templates/interfaces/multihomed-overlay6.j2 (limited to 'roles/vm/guest/network') diff --git a/roles/vm/guest/network/templates/interfaces/multihomed-base6.j2 b/roles/vm/guest/network/templates/interfaces/multihomed-base6.j2 new file mode 100644 index 00000000..53d118b0 --- /dev/null +++ b/roles/vm/guest/network/templates/interfaces/multihomed-base6.j2 @@ -0,0 +1,15 @@ + address {{ interface.address6 }} +{% for route in interface.static_routes6 | default([]) %} + up /bin/ip -6 route add {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{% if 'table' in route %} table {{ route.table }}{% endif %}{{ '' }} +{% endfor %} +{% if 'gateway6' in interface %} + up /bin/ip -6 route add default via {{ interface.gateway }} table default +{% endif %} + up /bin/ip -6 rule add pref 42000 lookup default + down /bin/ip -6 rule del pref 42000 +{% if 'gateway6' in interface %} + down /bin/ip -6 route del default via {{ interface.gateway }} table default +{% endif %} +{% for route in interface.static_routes6 | default([]) | reverse %} + down /bin/ip -6 route del {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{% if 'table' in route %} table {{ route.table }}{% endif %}{{ '' }} +{% endfor %} diff --git a/roles/vm/guest/network/templates/interfaces/multihomed-overlay.j2 b/roles/vm/guest/network/templates/interfaces/multihomed-overlay.j2 index 3fcfbcc7..580abf88 100644 --- a/roles/vm/guest/network/templates/interfaces/multihomed-overlay.j2 +++ b/roles/vm/guest/network/templates/interfaces/multihomed-overlay.j2 @@ -1,10 +1,11 @@ address {{ interface.address | ansible.utils.ipaddr('address') }} netmask {{ interface.address | ansible.utils.ipaddr('netmask') }} + #### overlays {% for overlay in interface.overlays %} {% if 'name' in overlay %} ## {{ overlay.name }} {% endif %} - up /bin/ip addr add dev $IFACE {{ overlay.address }} + up /bin/ip addr add dev $IFACE {{ overlay.address | ansible.utils.ipaddr('address') }}/32 up /bin/ip route add default via {{ overlay.gateway }} src {{ overlay.address | ansible.utils.ipaddr('address') }} table {{ 200 + loop.index0 }} up /bin/ip rule add pref {{ 40000 + loop.index0 }} from {{ overlay.address | ansible.utils.ipaddr('address') }} lookup {{ 200 + loop.index0 }} {% endfor %} @@ -15,5 +16,5 @@ {% endif %} down /bin/ip rule del pref {{ 40000 + loop.revindex0 }} down /bin/ip route del default via {{ overlay.gateway }} src {{ overlay.address | ansible.utils.ipaddr('address') }} table {{ 200 + loop.revindex0 }} - down /bin/ip addr del dev $IFACE {{ overlay.address }} + down /bin/ip addr del dev $IFACE {{ overlay.address | ansible.utils.ipaddr('address') }}/32 {% endfor %} diff --git a/roles/vm/guest/network/templates/interfaces/multihomed-overlay6.j2 b/roles/vm/guest/network/templates/interfaces/multihomed-overlay6.j2 new file mode 100644 index 00000000..0fd59882 --- /dev/null +++ b/roles/vm/guest/network/templates/interfaces/multihomed-overlay6.j2 @@ -0,0 +1,23 @@ + address {{ interface.address6 }} +#### overlays +{% for overlay in interface.overlays %} +{% if 'address6' in overlay %} +{% if 'name' in overlay %} + ## {{ overlay.name }} +{% endif %} + up /bin/ip -6 addr add dev $IFACE {{ overlay.address6 | ansible.utils.ipaddr('address') }}/128 nodad preferred_lft 0 + up /bin/ip -6 route add default via {{ overlay.gateway6 }} src {{ overlay.address6 | ansible.utils.ipaddr('address') }} table {{ 200 + loop.index0 }} + up /bin/ip -6 rule add pref {{ 40000 + loop.index0 }} from {{ overlay.address6 | ansible.utils.ipaddr('address') }} lookup {{ 200 + loop.index0 }} +{% endif %} +{% endfor %} + ########## +{% for overlay in interface.overlays | reverse %} +{% if 'address6' in overlay %} +{% if 'name' in overlay %} + ## {{ overlay.name }} +{% endif %} + down /bin/ip rule del pref {{ 40000 + loop.revindex0 }} + down /bin/ip route del default via {{ overlay.gateway6 }} src {{ overlay.address6 | ansible.utils.ipaddr('address') }} table {{ 200 + loop.revindex0 }} + down /bin/ip addr del dev $IFACE {{ overlay.address6 | ansible.utils.ipaddr('address') }}/128 +{% endif %} +{% endfor %} -- cgit v1.2.3