diff --git a/content/slides/cri/md/ansible.md b/content/slides/cri/md/ansible.md
index 23bc7ec8959259986f3c379ff32b37a178f54b18..e04114c08ab7a219878d0d38b79033941d2292da 100644
--- a/content/slides/cri/md/ansible.md
+++ b/content/slides/cri/md/ansible.md
@@ -211,6 +211,9 @@ ansible-playbook ansible/playbooks/ovh/duncan.yml
 * pip
 * pexpect (require pexcpect)
 
+
+* https://docs.ansible.com/ansible/latest/modules/template_module.html
+
 ## roles
 
 
@@ -226,6 +229,11 @@ ansible-playbook ansible/playbooks/ovh/duncan.yml
 ```
 ansible-galaxy install -f -r requirements.yml -p ansible/roles/public
 ```
+ou
+```
+ansible-galaxy install -f -r requirements.yml
+```
+en affectant le path dans le fichier requirements.yml au niveau du role distant
 
 
 ## plugins
diff --git a/content/slides/cri/md/gitlab.md b/content/slides/cri/md/gitlab.md
index 8a7cfbf6b42b1ac04bba71af9fb9adb8f42a5292..a9e2ff4613e482badb5f57c22ea3138517604c36 100644
--- a/content/slides/cri/md/gitlab.md
+++ b/content/slides/cri/md/gitlab.md
@@ -1,7 +1,10 @@
+
 ## CI/CD variables
 
 https://gitlab.isima.fr/cri/my/settings/ci_cd
 
+* https://docs.gitlab.com/ee/ci/yaml/ (When:manual) pour le déploiement
+
 
 ## personal tokens
 
@@ -56,3 +59,7 @@ Deploy keys allow read-only or read-write (if enabled) access to your repository
 ## specific runners
 
 https://gitlab.isima.fr/cri/my/settings/ci_cd
+
+## best practice
+
+* bin/setup (APP_TOKEN - gitlab secret variable / fallback ldap) bin/activate
diff --git a/content/slides/cri/md/vault.md b/content/slides/cri/md/vault.md
index 04bb22af5911afc8858084880e479e5f5bb414c4..94a46498ae7ba4c29b7984b9b957228fe23d1f0d 100644
--- a/content/slides/cri/md/vault.md
+++ b/content/slides/cri/md/vault.md
@@ -1,4 +1,5 @@
 # vault
+
 **By HashiCorp**
 
 ![vault](images/vault.png "vault")<!-- .element width="30%" -->
@@ -6,60 +7,175 @@
 [https://vault.isima.fr](https://vault.isima.fr)
 
 
-# Secrets
+## Installation
 
-Il existe deux étages deux secrets dans la stack
+Téléchargement d'un binaire
 
-* les **secrets locaux**: sont gérés par la commande `ansible-vault` et peuvent être lus simplement avec la commande `avq` de la stack (accessible une fois l'environnement activé). Les **secrets locaux** sont chiffrés en local, mais le fait qu'ils ne soient pas versionnés rend ce chiffrement non indispensable.
+  * https://releases.hashicorp.com/vault/
+  * décompresser dans /usr/local/bin
+  * configurer les permissions
+  * créer un service systemd
 
-* les **secrets globaux**: sont gérés par la commande `vault` de HashiCorp et peuvent être lus simplement avec la commande `hvq` de la stack (accessible une fois l'environnement activé). les secrets sont disponibles selon les permissions du jeton utilisés. les **secrets globaux** sont utilisés pour construire les **secrets locaux**
 
-## Générer un secret
+## Configuration
 
-Un secret robuste en ligne de commande se génère avec la commande `openssl` comme suit
+* /etc/vault/vault.hcl
 
 ```
-$ openssl rand -base64 256
+backend "file" {
+  path = "/var/lib/vault"
+}
+ui = true
+disable_mlock = true
+listener "tcp" {
+  address     = "10.0.0.1:8200"
+  tls_disable = 1
+}
 ```
 
-écrire le secret dans un fichier
+
+## Secret engine
+
+
+
+## KV2
 
 ```
-$ openssl rand -base64 256 > ~/.ansible_secrets/stack
+vault login token=<root-token>
+vault secrets enable -path=cri kv
+vault kv enable-versioning cri/ # kv2
 ```
 
-Stocker le secret directement dans hashicorp vault
+* les secrets sont versionnés
+* il est possible d'utiliser PATCH et pas seulement PUT
+
+
+## Authentification
+
+* par token
+  * root
+  * d'application
+
+* par ldap
+  * en réalité génère un token dans ~/.vault-token contenant
+
+
+## LDAP
 
 ```
-$ openssl rand -base64 256 @TODO
+$ vault write auth/ldap/config \
+    url="ldaps://samantha.local.isima.fr" \
+    userattr="sAMAccountName" \
+    userdn="dc=local,dc=isima,dc=fr" \
+    groupattr="cn" \
+    groupfilter="(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))" \
+    groupdn="ou=GROUPES_LOCAUX,dc=local,dc=isima,dc=fr" \
+    binddn="cn=vault,ou=Comptes de Services,dc=local,dc=isima,dc=fr" \
+    bindpass="secret" \
+    insecure_tls="false" \
+    starttls="true"
 ```
 
-## Vault
+
+## Policy
+
+/etc/vault/cri.hcl
+
+```
+# Write and manage secrets in key-value secret engine
+path "secret/*" {
+  capabilities = ["create", "read", "update", "delete", "list"]
+}
+
+# To enable secret engines
+path "sys/mounts/*" {
+  capabilities = [ "create", "read", "update", "delete" ]
+}
+
+path "secret/data/cri/*" {
+  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
+}
+
+path "cubbyhole/*" {
+  capabilities = ["create", "read", "update", "delete", "list"]
+}
+
+```
 
 ```
-vault login -method=ldap username=vimazeno # vault login token=<token>
-vault kv put cri/clusters/ovh/duncan/proxmoxapi password=itsasecret
-vault read cri/clusters/ovh/duncan/proxmoxapi
-vault read cri/clusters/ovh/duncan/proxmoxapi -format=json
-vault read cri/clusters/ovh/duncan/proxmoxapi -format=json | jq .data
-vault read cri/clusters/ovh/duncan/proxmoxapi -format=json | jq .data.password
-vault delete cri/clusters/ovh/duncan/proxmoxapi
+$ vault policy write cri /etc/vault/cri.hcl
 ```
 
-l'authentification ldap créée un fichier dans ~/.vault-token contenant votre token utilisateur avec vos permissions associées
+
+## Map policy and ldap group
 
 ```
-vault kv patch cri/clusters/ovh/duncan/proxmoxapi password="$(openssl rand -base64 25)"
+$ vault write auth/ldap/groups/cri policies=cri
 ```
 
-**N.B.** patch met à jour l'entrée avec KV2 et écrase les autres avec KV1 (on a activé KV2)
 
-##  Stocker un secret
+## Utilisation
+
+* le même binaire à télécharger
+  * cross plateforme
+* deux variables d'environnement
+  * $VAULT_ADDR
+  * $VAULT_TOKEN
+ou
+* l'[api](https://www.vaultproject.io/api/overview)
+
+
+## Workflow
+
+```
+vault login -method=ldap username=vimazeno
+vault secrets list
+vault list cri/
+vault read cri/tokens
+vault read cri/tokens # à chaque put on écrase les entrées qu'on ne réécrit pas
+vault read cri/tokens  -format=json
+vault read cri/tokens  -format=json | jq .data
+vault read cri/tokens  -format=json | jq .data.password
+vault kv put cri/tokens root=pipo2
+vault kv patch cri/tokens root1=pipo1
+vault delete cri/tokens
+```
+
+
+## création de token
+
+```
+$ vault policy write vault/apps/my.hcl
+$ vault token create -policy=my
+```
+
+
+## token et ci/cd
+
+* on teste en local avec ses droits via ldaps
+* on génère un token en variable de CI/CD pour autoriser l'appli à lire des secrets
+
+
+
+## Générer un secret
+
+Un secret robuste en ligne de commande se génère avec la commande `openssl` comme suit
+
+```
+$ openssl rand -base64 256
+```
+
+Stocker le secret directement dans hashicorp vault
+
+```
+$ vault kv put cri/tokens root=$(openssl rand -base64 25)
+```
+
 
-Ce secret devrait être stocké dans https://vault.isima.fr
+## SEE ALSO
 
-Avec la commande `vault` [@TODO vault install] dans le path adéquat.
+* [cri/ansible-playbook-vault](https://gitlab.isima.fr/cri/ansible-playbook-vault)
 
-Interroger la structure du vault avec la command `vault-tree` avant de choisir le path du secret semble une bonne idée [vault-tree]().
+* [Vault - Getting started](https://learn.hashicorp.com/vault/?track=getting-started#getting-started)
 
-Ces consignes sont valables pour tous le secrets de ce tutoriel
+* [consul](https://www.consul.io/)