diff --git a/HowtoAnsible.md b/HowtoAnsible.md index 4aa21314..4c023d8e 100644 --- a/HowtoAnsible.md +++ b/HowtoAnsible.md @@ -410,7 +410,7 @@ Options utiles pour [ansible-playbook](https://manpages.debian.org/cgi-bin/man.c * `-f` / `--forks N` : nombre de process lancés en parallèle (par défaut 5)… peut être utile de mettre à 1 pour ne pas paralléliser * `-i` / `--inventory FILENAME/DIRNAME` : utiliser le fichier ou le dossier d'inventaire fournit en paramètre * `-i` / `--inventory "example.com,"` : utilise un inventaire dynamique définie en paramètre (doit être un tableau) -* `-D` / `--diff` : montre un diff des changements effectués par les templates +* `-D` / `--diff` : montre un diff des changements effectués par les templates #### Limiter l'exécution à certaines machines @@ -720,9 +720,32 @@ Quelques options qui peuvent être utiles : * `private_key_file` : le chemin pour la clé pem * `remote_port` : le port SSH par défaut (`22`) * `remote_user` : l'utilisateur pour la connexion SSH par défaut (`root`) -* `retry_files_enabled` : mettre à `True` pour la création de fichier `.retry` après une failure de ansible pour reprendre le travail précédent - ajouté en argument dans l'appel de la commande +* `retry_files_enabled` : mettre à `True` pour la création de fichier `.retry` après un échec d'Ansible, pour reprendre le travail précédent - ajouté en argument dans l'appel de la commande +## Jinja + +Ansible utilise la bibliothèque [Jinja2](http://jinja.pocoo.org/docs/2.10/templates/) pour ses templates, ses filtres, ses conditions… + +* fusionner et dédoublonner 2 listes : + +~~~ +a: [1, 2, 3] +b: [3, 4, 5] +c: a | union(b) | unique +~~~ + +Il existe plein de [filtres sur les listes](http://docs.ansible.com/ansible/latest/playbooks_filters.html#list-filters) ; `union`, `intersect`, `difference`, `unique`, `sort`… + +* liste avec valeur par défaut (variable vide, indéfinie ou liste vide) + +~~~ +a: [] +c: a | default([1, 2], true) +~~~ + +C'est le second paramètre (`true`) qui permet à `default()` d'agir lorsque la variable `a` n'est pas seulement nulle ou indéfinie, mais aussi en cas de chaîne vide, tableau vide… + ## Erreurs Les messages d'erreurs ne sont pas le point fort d'Ansible. Il n'est pas toujours clair de savoir si c'est un soucis de syntaxe YAML, un problème de sémantique d'Ansible ou une erreur dans l'utilisation de Jinja2. De plus, Ansible tente de faire des recommandations, mais elles sont des fois plus déroutantes qu'éclairantes. En voici quelques unes que nous avons rencontrées.