From 32e24ff38a3190217497ac5cd399f5eaef1ebdf4 Mon Sep 17 00:00:00 2001
From: Benjamin Graillot <graillot@crans.org>
Date: Mon, 20 Apr 2020 22:27:17 +0200
Subject: [PATCH] [interfaces] Add supplementary lines from local facts to all
 interfaces

---
 .../templates/network/interfaces.d/00-srv.j2   | 18 ++++++++++++++++++
 .../templates/network/interfaces.d/01-ens.j2   |  9 +++++++++
 .../templates/network/interfaces.d/02-adm.j2   | 18 ++++++++++++++++++
 3 files changed, 45 insertions(+)

diff --git a/roles/interfaces/templates/network/interfaces.d/00-srv.j2 b/roles/interfaces/templates/network/interfaces.d/00-srv.j2
index 4c7468a1..7fc0390f 100644
--- a/roles/interfaces/templates/network/interfaces.d/00-srv.j2
+++ b/roles/interfaces/templates/network/interfaces.d/00-srv.j2
@@ -11,9 +11,27 @@ iface {{ srv_iface.stdout }} inet static
 	dns-nameservers {{ srv_dns }}
 	dns-search crans.org
 	up /sbin/ip link set $IFACE alias srv
+{% if 'interfaces' in ansible_local %}
+{% if srv_iface.stdout in ansible_local.interfaces %}
+{% if 'sup_if_4' in ansible_local.interfaces[srv_iface.stdout] %}
+{% for line in ansible_local.interfaces[srv_iface.stdout].sup_if_4 %}
+        {{ line }}
+{% endfor %}
+{% endif %}
+{% endif %}
+{% endif %}
 
 iface {{ srv_iface.stdout }} inet6 static
 	address {{ hostvars[inventory_hostname]['ansible_' + srv_iface.stdout].ipv6[0].address }}/{{ hostvars[inventory_hostname]['ansible_' + srv_iface.stdout].ipv6[0].prefix }}
 	autoconf 1
 	accept_ra 2
 	up /sbin/sysctl net/ipv6/conf/$IFACE/accept_ra_defrtr=1
+{% if 'interfaces' in ansible_local %}
+{% if srv_iface.stdout in ansible_local.interfaces %}
+{% if 'sup_if_6' in ansible_local.interfaces[srv_iface.stdout] %}
+{% for line in ansible_local.interfaces[srv_iface.stdout].sup_if_6 %}
+	{{ line }}
+{% endfor %}
+{% endif %}
+{% endif %}
+{% endif %}
diff --git a/roles/interfaces/templates/network/interfaces.d/01-ens.j2 b/roles/interfaces/templates/network/interfaces.d/01-ens.j2
index c7a34671..e94243b1 100644
--- a/roles/interfaces/templates/network/interfaces.d/01-ens.j2
+++ b/roles/interfaces/templates/network/interfaces.d/01-ens.j2
@@ -26,3 +26,12 @@ iface {{ ens_iface.stdout }} inet6 static
 	autoconf 1
 	accept_ra 2
 	up /sbin/sysctl net/ipv6/conf/$IFACE/accept_ra_defrtr=1
+{% if 'interfaces' in ansible_local %}
+{% if ens_iface.stdout in ansible_local.interfaces %}
+{% if 'sup_if_6' in ansible_local.interfaces[ens_iface.stdout] %}
+{% for line in ansible_local.interfaces[ens_iface.stdout].sup_if_6 %}
+	{{ line }}
+{% endfor %}
+{% endif %}
+{% endif %}
+{% endif %}
diff --git a/roles/interfaces/templates/network/interfaces.d/02-adm.j2 b/roles/interfaces/templates/network/interfaces.d/02-adm.j2
index d0b5b833..bd928eae 100644
--- a/roles/interfaces/templates/network/interfaces.d/02-adm.j2
+++ b/roles/interfaces/templates/network/interfaces.d/02-adm.j2
@@ -10,6 +10,24 @@ iface {{ adm_iface.stdout }} inet static
 	dns-nameservers {{ adm_dns }}
 	dns-search adm.crans.org
 	up /sbin/ip link set $IFACE alias adm
+{% if 'interfaces' in ansible_local %}
+{% if adm_iface.stdout in ansible_local.interfaces %}
+{% if 'sup_if_4' in ansible_local.interfaces[adm_iface.stdout] %}
+{% for line in ansible_local.interfaces[adm_iface.stdout].sup_if_4 %}
+	{{ line }}
+{% endfor %}
+{% endif %}
+{% endif %}
+{% endif %}
 
 iface {{ adm_iface.stdout }} inet6 static
 	address {{ hostvars[inventory_hostname]['ansible_' + adm_iface.stdout].ipv6[0].address }}/{{ hostvars[inventory_hostname]['ansible_' + adm_iface.stdout].ipv6[0].prefix }}
+{% if 'interfaces' in ansible_local %}
+{% if adm_iface.stdout in ansible_local.interfaces %}
+{% if 'sup_if_6' in ansible_local.interfaces[adm_iface.stdout] %}
+{% for line in ansible_local.interfaces[adm_iface.stdout].sup_if_6 %}
+	{{ line }}
+{% endfor %}
+{% endif %}
+{% endif %}
+{% endif %}