diff --git a/group_vars/dhcp.yml b/group_vars/dhcp.yml
index 0266042b9b467f4a77fad89ef665c0ebd0b4d8e0..bbdadaaa7c87740736d76716e85bf4c3399dde74 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,38 @@ 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:
+glob_re2o_services:
   server: re2o.adm.crans.org
-  service_user: "ploptotoisverysecure"
-  service_password: "ploptotoisverysecure"
-  dhcp:
-    uri: "/tmp/re2o-dhcp.git"
+  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/host_vars/routeur-daniel.adm.crans.org.yml b/host_vars/routeur-daniel.adm.crans.org.yml
index 450e7f92f991976e5d444e40f9b8f03f4eec42b1..6dcac2b5dca4f1b9b85026dbce70fd02669184bd 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 ce28f34d133abc0ed6af02b35f4b0516b239f614..87723febc99763cc6455f14829aa5566acad14ed 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 a87df80208d252ed9143caff8716c9db8f2d1413..8426d0e5a28cf04ef1fc1f4c7e455736c621e33d 100755
--- a/plays/dhcp.yml
+++ b/plays/dhcp.yml
@@ -2,6 +2,10 @@
 ---
 # Deploy DHCP server
 - 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
     - re2o-services
diff --git a/roles/isc-dhcp-server/handlers/main.yml b/roles/isc-dhcp-server/handlers/main.yml
index 46de7456e4b3c64bb6f9b96c6bb7fa06585ad9a4..e2f3f11d4bc79c1a6d61a85e53c1ca2033b6ea5a 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 64cdec8e2577929d678e28ae3e6e958328b519f2..e406553c4bcdbb73ad7b82f2bbec65605f8599d0 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 2a52f3d611523469414f4226d5265976ce69c697..b38a95f61491a731ee6a10f4d88505bdc304c1dd 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 cc11df72bfedb238676fc679d24c407295c0ecf2..410be8698f21d6b6cbf7dac628e3a277fc0cce55 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 7632df1b26b47eabaf01de17741bb7a84bb368c0..0f47c5c9f4743ab0250b9d807a859eba6ca9ea91 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
diff --git a/roles/re2o-services/templates/re2o-services/config.ini.j2 b/roles/re2o-services/templates/re2o-services/config.ini.j2
index 38cbd7554e55271ba68ad11af06b7daddaf652d6..81aed4ae78f7609b70e6e6d09dabf44c3e3edca7 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