From 2a191b0622e9893ed120e4460498923df1dc6dbb Mon Sep 17 00:00:00 2001
From: Benjamin Graillot <graillot@crans.org>
Date: Sun, 16 Aug 2020 17:03:28 +0200
Subject: [PATCH] [dhcp][keepalived] Enables dhcp on adh and infra

---
 group_vars/dhcp.yml                           | 23 ++++++++++++++++++-
 group_vars/keepalived.yml                     |  3 +++
 .../templates/dhcp/dhcpd.conf.j2              |  2 ++
 .../templates/keepalived/keepalived.conf.j2   |  6 ++---
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/group_vars/dhcp.yml b/group_vars/dhcp.yml
index f8e16fa9..b4db9d9d 100644
--- a/group_vars/dhcp.yml
+++ b/group_vars/dhcp.yml
@@ -16,7 +16,28 @@ dhcp:
       domain_name: "adh-nat.crans.org"
       domain_search: "adh-nat.crans.org"
       options: []
-      lease_file: "/tmp/dhcp.list"
+      lease_file: "/tmp/adh-nat-dhcp.list"
+    - network: "185.230.78.0/24"
+      deny_unknown: True
+      vlan: "adh"
+      default_lease_time: "600"
+      max_lease_time: "7200"
+      routers: "185.230.78.99"
+      dns: ["185.230.78.99"]
+      domain_name: "adh.crans.org"
+      domain_search: "adh.crans.org"
+      options: []
+      lease_file: "/tmp/adh-dhcp.list"
+    - network: "172.16.32.0/22"
+      deny_unknown: True
+      vlan: "infra"
+      default_lease_time: "600"
+      max_lease_time: "7200"
+      dns: ["172.16.32.99"]
+      domain_name: "infra.crans.org"
+      domain_search: "infra.crans.org"
+      options: []
+      lease_file: "/tmp/infra-dhcp.list"
 
 re2o:
   server: re2o.adm.crans.org
diff --git a/group_vars/keepalived.yml b/group_vars/keepalived.yml
index 09db9c26..68cea95a 100644
--- a/group_vars/keepalived.yml
+++ b/group_vars/keepalived.yml
@@ -11,6 +11,9 @@ glob_keepalived:
       ipv6: no
       notify: /usr/scripts/notify-dhcp
       zones:
+        - vlan: adh
+          ipv4: 185.230.78.99/24
+          brd: true
         - vlan: adh-nat
           ipv4: 100.64.0.99/16
           brd: true
diff --git a/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2 b/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2
index 427cce50..2a52f3d6 100644
--- a/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2
+++ b/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2
@@ -45,7 +45,9 @@ subnet {{ subnet.network | ipaddr('network') }} netmask {{ subnet.network | ipad
 {% endif %}
        option subnet-mask {{ subnet.network | ipaddr('netmask') }};
        option broadcast-address {{ subnet.network | ipaddr('broadcast') }};
+{% if subnet.routers is defined %}
        option routers {{ subnet.routers }};
+{% endif %}
        option domain-name-servers {{ subnet.dns | join(", ") }};
        option domain-name "{{ subnet.domain_name }}";
        option domain-search "{{ subnet.domain_search }}";
diff --git a/roles/keepalived/templates/keepalived/keepalived.conf.j2 b/roles/keepalived/templates/keepalived/keepalived.conf.j2
index 97c93c53..f3dbc3cc 100644
--- a/roles/keepalived/templates/keepalived/keepalived.conf.j2
+++ b/roles/keepalived/templates/keepalived/keepalived.conf.j2
@@ -26,11 +26,11 @@ vrrp_instance {{ instance.tag }}4 {
 
   virtual_ipaddress {
 {% for zone in keepalived.pool[instance.name].zones %}
-  {% if zone.brd  %}
+{% if zone.brd  %}
       {{ zone.ipv4 }} brd {{ zone.ipv4 | ipaddr('broadcast') }} dev {{ interfaces[zone.vlan] }} scope global
-  {% else %}
+{% else %}
       {{ zone.ipv4 }} dev {{ interfaces[zone.vlan] }} scope global
-  {% endif %}
+{% endif %}
 {% endfor %}
   }
 }