From f5cf25c9b719fe95cf62bc0b4fab0a6265ce7cc6 Mon Sep 17 00:00:00 2001
From: shirenn <shirenn@crans.org>
Date: Fri, 5 Feb 2021 20:11:18 +0100
Subject: [PATCH 1/2] [dhcp]  dont clone git from /tmp

---
 group_vars/dhcp.yml                           | 54 +++++++++++++------
 host_vars/routeur-daniel.adm.crans.org.yml    |  1 +
 host_vars/routeur-jack.adm.crans.org.yml      |  2 +-
 plays/dhcp.yml                                |  3 ++
 roles/isc-dhcp-server/handlers/main.yml       |  1 +
 roles/isc-dhcp-server/tasks/main.yml          |  8 +--
 .../templates/dhcp/dhcpd.conf.j2              | 40 +++++++-------
 roles/re2o-dhcp/tasks/main.yml                |  2 +-
 .../templates/cron.d/re2o-services-dhcp.j2    |  2 +-
 9 files changed, 72 insertions(+), 41 deletions(-)

diff --git a/group_vars/dhcp.yml b/group_vars/dhcp.yml
index 0266042b..a92e2867 100644
--- a/group_vars/dhcp.yml
+++ b/group_vars/dhcp.yml
@@ -1,22 +1,10 @@
 ---
-
-dhcp:
+glob_dhcp:
   authoritative: True
   global_options:
     - { key: "interface-mtu", value: "1500" }
   global_parameters: []
   subnets:
-    - network: "100.64.0.0/16"
-      deny_unknown: True
-      vlan: "adh_nat"
-      default_lease_time: "600"
-      max_lease_time: "7200"
-      routers: "100.64.0.99"
-      dns: ["100.64.0.99"]
-      domain_name: "adh-nat.crans.org"
-      domain_search: "adh-nat.crans.org"
-      options: []
-      lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.adh-nat.crans.org.list"
     - network: "185.230.78.0/24"
       deny_unknown: True
       vlan: "adh"
@@ -28,6 +16,17 @@ dhcp:
       domain_search: "adh.crans.org"
       options: []
       lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.adh.crans.org.list"
+    - network: "100.64.0.0/16"
+      deny_unknown: True
+      vlan: "adh_nat"
+      default_lease_time: "600"
+      max_lease_time: "7200"
+      routers: "100.64.0.99"
+      dns: ["100.64.0.99"]
+      domain_name: "adh-nat.crans.org"
+      domain_search: "adh-nat.crans.org"
+      options: []
+      lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.adh-nat.crans.org.list"
     - network: "172.16.32.0/22"
       deny_unknown: True
       vlan: "infra"
@@ -38,12 +37,37 @@ dhcp:
       domain_search: "infra.crans.org"
       options: []
       lease_file: "/var/local/re2o-services/dhcp/generated/dhcp.infra.crans.org.list"
+    - network: "172.16.14.0/24"
+      vlan: "accueil"
+      default_lease_time: "600"
+      max_lease_time: "7200"
+      dns: ["172.16.14.99"]
+      domain_name: "accueil.crans.org"
+      domain_search: "accueil.crans.org"
+      ranges:
+        - min: 172.16.14.1
+          max: 172.16.14.98
+        - min: 172.16.14.100
+          max: 172.16.14.254
+      options: []
+    - network: 100.65.0.0/16
+      vlan: "federez"
+      default_lease_time: "600"
+      max_lease_time: "7200"
+      routers: "100.65.0.99"
+      dns: ["100.65.0.99"]
+      domain_name: "federez.net"
+      domain_search: "federez.net"
+      ranges:
+        - min: 100.65.1.0
+          max: 100.65.255.254
+      options: []
 
 re2o:
   server: re2o.adm.crans.org
   service_user: "ploptotoisverysecure"
   service_password: "ploptotoisverysecure"
-  dhcp:
-    uri: "/tmp/re2o-dhcp.git"
 
 mail_server: smtp.adm.crans.org
+glob_re2o_dhcp:
+  uri: "https://gitlab.adm.crans.org/nounous/re2o-dhcp.git"
diff --git a/host_vars/routeur-daniel.adm.crans.org.yml b/host_vars/routeur-daniel.adm.crans.org.yml
index 450e7f92..6dcac2b5 100644
--- a/host_vars/routeur-daniel.adm.crans.org.yml
+++ b/host_vars/routeur-daniel.adm.crans.org.yml
@@ -8,6 +8,7 @@ interfaces:
   adh_nat: ens23
   zayo: enp1s3
   federez: enp1s4
+  accueil: ens1
 
 firewall:
   version: HEAD
diff --git a/host_vars/routeur-jack.adm.crans.org.yml b/host_vars/routeur-jack.adm.crans.org.yml
index ce28f34d..87723feb 100644
--- a/host_vars/routeur-jack.adm.crans.org.yml
+++ b/host_vars/routeur-jack.adm.crans.org.yml
@@ -7,7 +7,7 @@ interfaces:
   adh: ens22
   adh_nat: ens23
   zayo: enp1s3
-  federez: enp1s4
+#  federez: enp1s4
   accueil: ens1
 
 firewall:
diff --git a/plays/dhcp.yml b/plays/dhcp.yml
index a87df802..969229ef 100755
--- a/plays/dhcp.yml
+++ b/plays/dhcp.yml
@@ -2,6 +2,9 @@
 ---
 # Deploy DHCP server
 - hosts: dhcp
+  vars:
+    dhcp: "{{ glob_dhcp | default({}) | combine(loc_dhcp | default({})) }}"
+    re2o_dhcp: "{{ glob_re2o_dhcp | default({}) | combine(loc_re2o_dhcp | default({})) }}"
   roles:
     - isc-dhcp-server
     - re2o-services
diff --git a/roles/isc-dhcp-server/handlers/main.yml b/roles/isc-dhcp-server/handlers/main.yml
index 46de7456..e2f3f11d 100644
--- a/roles/isc-dhcp-server/handlers/main.yml
+++ b/roles/isc-dhcp-server/handlers/main.yml
@@ -4,3 +4,4 @@
     name: isc-dhcp-server
     state: restarted
     enabled: true
+  when: not ansible_check_mode
diff --git a/roles/isc-dhcp-server/tasks/main.yml b/roles/isc-dhcp-server/tasks/main.yml
index 64cdec8e..e406553c 100644
--- a/roles/isc-dhcp-server/tasks/main.yml
+++ b/roles/isc-dhcp-server/tasks/main.yml
@@ -13,13 +13,13 @@
     src: default/isc-dhcp-server.j2
     dest: /etc/default/isc-dhcp-server
     mode: 0600
-  notify:
-    - restart dhcp server
+#  notify:
+#    - restart dhcp server
 
 - name: Configure isc-dhcp-server
   template:
     src: dhcp/dhcpd.conf.j2
     dest: /etc/dhcp/dhcpd.conf
     mode: 0600
-  notify:
-    - restart dhcp server
+#  notify:
+#    - restart dhcp server
diff --git a/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2 b/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2
index 2a52f3d6..b38a95f6 100644
--- a/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2
+++ b/roles/isc-dhcp-server/templates/dhcp/dhcpd.conf.j2
@@ -36,40 +36,42 @@ include "./dhcp-failover.conf";
 
 {% for subnet in dhcp.subnets %}
 subnet {{ subnet.network | ipaddr('network') }} netmask {{ subnet.network | ipaddr('netmask') }} {
-       interface "{{ interfaces[subnet.vlan]  }}";
+	interface "{{ interfaces[subnet.vlan]  }}";
 {% if subnet.default_lease_time is defined %}
-       default-lease-time {{ subnet.default_lease_time }};
+	default-lease-time {{ subnet.default_lease_time }};
 {% endif %}
 {% if subnet.max_lease_time is defined %}
-       max-lease-time {{ subnet.max_lease_time }};
+	max-lease-time {{ subnet.max_lease_time }};
 {% endif %}
-       option subnet-mask {{ subnet.network | ipaddr('netmask') }};
-       option broadcast-address {{ subnet.network | ipaddr('broadcast') }};
+	option subnet-mask {{ subnet.network | ipaddr('netmask') }};
+	option broadcast-address {{ subnet.network | ipaddr('broadcast') }};
 {% if subnet.routers is defined %}
-       option routers {{ subnet.routers }};
+	option routers {{ subnet.routers }};
 {% endif %}
-       option domain-name-servers {{ subnet.dns | join(", ") }};
-       option domain-name "{{ subnet.domain_name }}";
-       option domain-search "{{ subnet.domain_search }}";
+	option domain-name-servers {{ subnet.dns | join(", ") }};
+	option domain-name "{{ subnet.domain_name }}";
+	option domain-search "{{ subnet.domain_search }}";
 {% for option in subnet.options %}
-       option {{ option.key }} {{ option.value }};
+	option {{ option.key }} {{ option.value }};
 {% endfor %}
 {% if subnet.lease_file is defined %}
-       include "{{ subnet.lease_file }}";
+	include "{{ subnet.lease_file }}";
 {% endif %}
-{% if subnet.range is defined %}
-       pool {
+{% if subnet.ranges is defined %}
+	pool {
   {% if dhcp.failover is defined %}
-    failover peer {{ dhcp.failover.name }}
+		failover peer {{ dhcp.failover.name }}
   {% endif %}
-          range {{ subnet.range | join(" ")}};
-       }
+{% for pool in subnet.ranges %}
+		range {{ pool.min }} {{ pool.max }};
+{% endfor %}
+	}
   {% endif %}
 
-{% if subnet.deny_unknown %}
-       deny unknown-clients;
+{% if subnet.deny_unknown is defined and subnet.deny_unknown %}
+	deny unknown-clients;
 {% else %}
-       allow unknown-clients;
+	allow unknown-clients;
 {% endif %}
 }
 {% endfor %}
diff --git a/roles/re2o-dhcp/tasks/main.yml b/roles/re2o-dhcp/tasks/main.yml
index cc11df72..410be869 100644
--- a/roles/re2o-dhcp/tasks/main.yml
+++ b/roles/re2o-dhcp/tasks/main.yml
@@ -19,7 +19,7 @@
 
 - name: Clone re2o-dhcp repository
   git:
-    repo: "{{ re2o.dhcp.uri }}"
+    repo: "{{ re2o_dhcp.uri }}"
     dest: /var/local/re2o-services/dhcp
     version: crans
     umask: '002'
diff --git a/roles/re2o-dhcp/templates/cron.d/re2o-services-dhcp.j2 b/roles/re2o-dhcp/templates/cron.d/re2o-services-dhcp.j2
index 7632df1b..0f47c5c9 100644
--- a/roles/re2o-dhcp/templates/cron.d/re2o-services-dhcp.j2
+++ b/roles/re2o-dhcp/templates/cron.d/re2o-services-dhcp.j2
@@ -1,2 +1,2 @@
 {{ ansible_header | comment }}
-* * * * * root /usr/bin/python3 /var/local/re2o-services/dhcp/main.py
+* * * * * root /usr/bin/python3 /var/local/re2o-services/dhcp/main.py --force
-- 
GitLab


From d03eed8abe46e455622edfd1c51d099506234b34 Mon Sep 17 00:00:00 2001
From: shirenn <shirenn@crans.org>
Date: Fri, 5 Feb 2021 20:18:24 +0100
Subject: [PATCH 2/2] [re2o-services] PEPCRANSIFIED

---
 group_vars/dhcp.yml                                    |  9 +++++----
 plays/dhcp.yml                                         |  1 +
 .../templates/re2o-services/config.ini.j2              | 10 +++++-----
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/group_vars/dhcp.yml b/group_vars/dhcp.yml
index a92e2867..bbdadaaa 100644
--- a/group_vars/dhcp.yml
+++ b/group_vars/dhcp.yml
@@ -63,11 +63,12 @@ glob_dhcp:
           max: 100.65.255.254
       options: []
 
-re2o:
+glob_re2o_services:
   server: re2o.adm.crans.org
-  service_user: "ploptotoisverysecure"
-  service_password: "ploptotoisverysecure"
+  service:
+    user: services
+    password: "{{ vault_re2o_service_password }}"
+  mail_server: "{{ glob_smtp }}"
 
-mail_server: smtp.adm.crans.org
 glob_re2o_dhcp:
   uri: "https://gitlab.adm.crans.org/nounous/re2o-dhcp.git"
diff --git a/plays/dhcp.yml b/plays/dhcp.yml
index 969229ef..8426d0e5 100755
--- a/plays/dhcp.yml
+++ b/plays/dhcp.yml
@@ -4,6 +4,7 @@
 - hosts: dhcp
   vars:
     dhcp: "{{ glob_dhcp | default({}) | combine(loc_dhcp | default({})) }}"
+    re2o_services: "{{ glob_re2o_services | default({}) | combine(loc_re2o_services | default({})) }}"
     re2o_dhcp: "{{ glob_re2o_dhcp | default({}) | combine(loc_re2o_dhcp | default({})) }}"
   roles:
     - isc-dhcp-server
diff --git a/roles/re2o-services/templates/re2o-services/config.ini.j2 b/roles/re2o-services/templates/re2o-services/config.ini.j2
index 38cbd755..81aed4ae 100644
--- a/roles/re2o-services/templates/re2o-services/config.ini.j2
+++ b/roles/re2o-services/templates/re2o-services/config.ini.j2
@@ -1,9 +1,9 @@
-{{ ansible_header | comment(decoration='; ') }}
+{{ ansible_header | comment(decoration='# ') }}
 [Re2o]
-hostname = {{ re2o.server }}
-username = {{ re2o.service_userĂ‚ }}
-password = {{ re2o.service_password }}
+hostname = {{ re2o_services.server }}
+username = {{ re2o_services.service.userĂ‚ }}
+password = {{ re2o_services.service.password }}
 
 [Mail]
-mailserver = {{ mail_server }}
+mailserver = {{ re2o_services.mail_server }}
 port = 25
-- 
GitLab