diff --git a/README.md b/README.md
index 29d1a00b..5511074b 100644
--- a/README.md
+++ b/README.md
@@ -91,18 +91,29 @@ vers les serveurs puis détruites à la fin de l'exécution.
 
 ### Gestion des groupes de machines
 
-Dans BCFG2 on avait des groupes selon la version de Debian.
-Avec Ansible on peut utiliser en condition
-`ansible_distribution_release == 'stretch'` par exemple.
-Donc il n'y a plus trop d'intêret de séparer selon la version de Debian les machines.
+Pour la majorité des groupes ont retrouve ce qu'il y avait dans BCFG2
+(`crans-vm`, `crans`…).
+Pour la liste complète, je vous invite à lire le fichier `hosts`.
 
-Sinon pour les autres groupes, vous allez retrouver une configuration similaire à BCFG2
-avec par exemple les groupes `crans-vm`, `crans`…
-Pour en savoir plus je vous invite à lire le fichier `hosts`.
+Néanmoins grâce au système de facts d'Ansible, les groupes suivants ont été
+remplacés par une condition :
+
+  * pour tester les versions de Debian,
+
+    ```YAML
+    ansible_distribution_release == 'stretch'
+    ```
+
+  * pour tester si c'est un CPU Intel x86_64,
+
+    ```YAML
+    ansible_processor[0].find('Intel') != -1
+    and ansible_architecture == 'x86_64'
+    ```
 
 Pour les fonctions (`proxy-server`, `dhcp-dynamique`…) il a été choisi
-de ne pas faire de groupe particulier mais plutôt de sélectionner les machines
-pertinentes directement dans les playbooks.
+de ne pas faire de groupe particulier mais plutôt de sélectionner/enlever
+les machines pertinentes directement dans les playbooks.
 
 ### Lister tout ce que sait Ansible sur un hôte
 
@@ -112,5 +123,5 @@ Pour lister tous les faits qu'Ansible collecte nativement d'un serveur
 on peut exécuter le module `setup` manuellement.
 
 ```
-ansible -i hosts zamok.crans.org -m setup --ask-vault-pass
+ansible zamok.adm.crans.org -m setup --ask-vault-pass
 ```
diff --git a/base.yml b/base.yml
new file mode 100644
index 00000000..e4f58c54
--- /dev/null
+++ b/base.yml
@@ -0,0 +1,4 @@
+---
+# Playbook to deploy common Crans configuration and tools
+- hosts: all
+  roles: []  # TODO
diff --git a/dns.yml b/dns.yml
new file mode 100644
index 00000000..e23c4e2f
--- /dev/null
+++ b/dns.yml
@@ -0,0 +1,4 @@
+---
+# Playbook to deploy DNS server
+- hosts: odlyd.adm.crans.org
+  roles: []  # TODO
diff --git a/firewall.yml b/firewall.yml
new file mode 100644
index 00000000..8c335cf4
--- /dev/null
+++ b/firewall.yml
@@ -0,0 +1,4 @@
+---
+# Playbook to firewall
+- hosts: gulp.adm.crans.org
+  roles: []  # TODO
diff --git a/hosts b/hosts
index a6c9e676..c904f1db 100644
--- a/hosts
+++ b/hosts
@@ -2,22 +2,72 @@
 
 # How to name your server ?
 # > We name servers according to location, then type.
-# > So all containers at OVH are in ovh-container.
 # > Then we regroup everything in global geographic and type groups.
 
-[crans-pve]
+[crans-physical]
+gulp.adm.crans.org
+odlyd.adm.crans.org
+soyouz.adm.crans.org
+fy.adm.crans.org
+zamok.adm.crans.org
+vo.adm.crans.org
+ft.adm.crans.org
+stitch.adm.crans.org
+fz.adm.crans.org
+thot.adm.crans.org
+cochon.adm.crans.org
+charybde.adm.crans.org
+vulcain.adm.crans.org
+omnomnom.adm.crans.org
+zbee.adm.crans.org
+zephir.adm.crans.org
 
 [crans-container]
+sitesweb.adm.crans.org
 
 [crans-vm]
+re2o-bcfg2.adm.crans.org
+re2o-srv.adm.crans.org
+re2o-ldap.adm.crans.org
+dhcp.adm.crans.org
+nem.adm.crans.org
+kenobi.adm.crans.org
+roundcube-srv.adm.crans.org
+kiwi.adm.crans.org
+eap.adm.crans.org
+radius.adm.crans.org
+titanic.adm.crans.org
+irc.adm.crans.org
+alice.adm.crans.org
+silice.adm.crans.org
+owncloud-srv.adm.crans.org
+tracker.adm.crans.org
+jitsi.adm.crans.org
+bakdaur.adm.crans.org
+frontdaur.adm.crans.org
+cups.adm.crans.org
+civet.adm.crans.org
+owl.adm.crans.org
+gitzly.adm.crans.org
+cas-srv.adm.crans.org
+redisdead.adm.crans.org
+ethercalc-srv.adm.crans.org
+mediadrop-srv.adm.crans.org
+ytrap-llatsni.adm.crans.org
+unifi.adm.crans.org
+horde-srv.adm.crans.org
+ipv6-zayo.adm.crans.org
+news.adm.crans.org
+xmpp.adm.crans.org
+routeur.adm.crans.org
 prometheus.adm.crans.org
 
 [ovh-server]
-
+soyouz.adm.crans.org
 
 # everything at crans
 [crans:children]
-crans-pve
+crans-physical
 crans-container
 crans-vm
 
@@ -25,6 +75,10 @@ crans-vm
 [ovh:children]
 ovh-server
 
+# every physical server
+[physical:children]
+crans-physical
+
 # every LXC container
 [container:children]
 crans-container
@@ -33,7 +87,3 @@ crans-container
 [vm:children]
 crans-vm
 
-# every PVE
-[pve:children]
-crans-pve
-
diff --git a/ldap.yml b/ldap.yml
index 3f613fff..08a890fa 100644
--- a/ldap.yml
+++ b/ldap.yml
@@ -13,6 +13,9 @@
     ldap_nslcd_bind_dn: "cn=nslcd,ou=service-users,{{ ldap_base }}"
     ldap_nslcd_passwd: "{{ vault_ldap_nslcd_passwd }}"
 
+    # Group permissions
+    ssh_allow_groups: ssh nounou apprenti cableur root
+
     # Scripts will tell users to go there to manage their account
     intranet_url: 'https://intranet.crans.org/'
 
@@ -20,3 +23,7 @@
     ssh_pub_keys: "{{ vault_ssh_pub_keys }}"
   roles:
     - ldap-client
+
+# Deploy LDAP replica
+- hosts: odlyd.adm.crans.org,soyouz.adm.crans.org,fy.adm.crans.org,thot.adm.crans.org
+  roles: []  # TODO
diff --git a/nfs.yml b/nfs.yml
new file mode 100644
index 00000000..11f950da
--- /dev/null
+++ b/nfs.yml
@@ -0,0 +1,4 @@
+---
+# Playbook to deploy NFS
+- hosts: crans,!odlyd.adm.crans.org
+  roles: []  # TODO
diff --git a/roles/ldap-client/tasks/group_security.yml b/roles/ldap-client/tasks/group_security.yml
deleted file mode 100644
index 08fb426c..00000000
--- a/roles/ldap-client/tasks/group_security.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-# Filter SSH on groups
-- name: Filter SSH on groups
-  lineinfile:
-    dest: /etc/ssh/sshd_config
-    regexp: ^AllowGroups
-    line: AllowGroups ssh nounou apprenti cableur root
-    state: present
-
-# To gain root access with ldap rights
-- name: Install SUDO package
-  package:
-    name: sudo
-    state: present
-  register: package_result
-  retries: 3
-  until: package_result is succeeded
-
-# Set sudo group
-- name: Configure sudoers sudo group
-  template:
-    src: sudoers.j2
-    dest: /etc/sudoers
-    mode: 0440
diff --git a/roles/ldap-client/tasks/install_ldap.yml b/roles/ldap-client/tasks/install_ldap.yml
index cb9959c2..5e8dae38 100644
--- a/roles/ldap-client/tasks/install_ldap.yml
+++ b/roles/ldap-client/tasks/install_ldap.yml
@@ -31,5 +31,4 @@
     - passwd
     - group
     - shadow
-    - sudoers
   notify: Restart nslcd service
diff --git a/roles/ldap-client/tasks/main.yml b/roles/ldap-client/tasks/main.yml
index 7b79d34d..110ce8ac 100644
--- a/roles/ldap-client/tasks/main.yml
+++ b/roles/ldap-client/tasks/main.yml
@@ -2,12 +2,17 @@
 # Install and configure main LDAP tools
 - include_tasks: install_ldap.yml
 
-# Filter who can access server and sudo on groups
-- include_tasks: group_security.yml
-
 # Some userland scripts specific to LDAP install
 - include_tasks: userland_scripts.yml
 
+# Filter SSH on groups
+- name: Filter SSH on groups
+  lineinfile:
+    dest: /etc/ssh/sshd_config
+    regexp: ^AllowGroups
+    line: "AllowGroups {{ ssh_allow_groups }}"
+    state: present
+
 # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=568577
 - name: Ensure home directories are created upon login
   lineinfile:
diff --git a/roles/ldap-client/templates/nslcd.conf.j2 b/roles/ldap-client/templates/nslcd.conf.j2
index 0a8c813c..594a6384 100644
--- a/roles/ldap-client/templates/nslcd.conf.j2
+++ b/roles/ldap-client/templates/nslcd.conf.j2
@@ -14,8 +14,8 @@ uri {{ ldap_master_uri }}
 
 # The search base that will be used for all queries.
 base {{ ldap_base }}
-base passwd cn=Utilisateurs,{{ ldap_base }}
-base shadow cn=Utilisateurs,{{ ldap_base }}
+base passwd {{ ldap_user_tree }}
+base shadow {{ ldap_user_tree }}
 base group ou=posix,ou=groups,{{ ldap_base }}
 
 # The LDAP protocol version to use.
diff --git a/roles/ldap-client/templates/sudoers.j2 b/roles/ldap-client/templates/sudoers.j2
deleted file mode 100644
index 8eb1b8f2..00000000
--- a/roles/ldap-client/templates/sudoers.j2
+++ /dev/null
@@ -1,34 +0,0 @@
-# {{ ansible_managed }}
-#
-# This file MUST be edited with the 'visudo' command as root.
-#
-# Please consider adding local content in /etc/sudoers.d/ instead of
-# directly modifying this file.
-#
-# See the man page for details on how to write a sudoers file.
-#
-Defaults        env_keep += "DARCS_EMAIL EDITOR PYTHONIOENCODING GIT_*"
-Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
-Defaults        passprompt_override
-Defaults        passprompt="[sudo] password for %p on %h: "
-
-# Host alias specification
-
-# User alias specification
-User_Alias      NOUNOUS= %nounou
-User_Alias      CABLEUR= %cableur
-User_Alias      ANCIEN= %ancien
-User_Alias      IMPRIMEURS= %imprimeurs
-User_Alias      BUREAU= %bureau
-
-Runas_Alias     USERS= %users
-
-# Cmnd alias specification
-
-# User privilege specification
-root    ALL=(ALL:ALL) ALL
-NOUNOUS    ALL=(ALL:ALL) ALL
-
-# See sudoers(5) for more information on "#include" directives:
-
-#includedir /etc/sudoers.d
diff --git a/wiki.yml b/wiki.yml
new file mode 100644
index 00000000..e70183f8
--- /dev/null
+++ b/wiki.yml
@@ -0,0 +1,4 @@
+---
+# Playbook to deploy MoinMoin Wiki
+- hosts: soyouz.adm.crans.org
+  roles: []  # TODO