Académique Documents
Professionnel Documents
Culture Documents
Introduction
Lors du dépannage des problèmes Ansible, il est utile de savoir comment tester
Mode vérification
Des fois, vous aurez besoin de vérifier si une tâche est fonctionnelle sur vos serveurs
distants sans avoir à effectuer de modifications sur vos systèmes distants. Pour ce
playbook .
Parfois, vous souhaiterez peut-être enter en mode de vérification sur des tâches
individuelles. Cela peut se faire via l'instruction check_mode , qui peut être ajoutée à
tasks:
- name: Add test text in /home/hatim/hatim.txt
lineinfile:
line: "test"
dest: /home/hatim/hatim.txt
state: present
check_mode: yes
tasks:
- name: Add test text in /home/hatim/notfound.txt
lineinfile:
line: "test"
dest: /home/hatim/notfound.txt
state: present
ignore_errors: '{{ ansible_check_mode }}'
# Vous pouvez aussi l'instruction suivante: when: not ansible_check_mode
- debug: msg="Si vous voyez ce message c'est que la tâche précédente a été ignorée"
Résultat :
Mode différenciation
C'est bien beau tout ça, mais ça serait mieux si Ansible nous avertit des
modifications qu'il est supposé apporter sur la machine cible. Pour cela il existe
l'option --diff qui est principalement utilisée dans les modules qui manipulent
des fichiers, mais d'autres modules peuvent également afficher des informations
«avant et après» (par exemple, le module user). D'ailleurs, elle fonctionne très bien
Étant donné que l'option diff produit une grande quantité de sortie, il est
tasks:
- name: Add test text in /home/hatim/hatim.txt
lineinfile:
line: "test"
dest: /home/hatim/hatim.txt
state: present
Résultat :
changed: [localhost]
Si vous souhaitez activer la différence sur une tâche particulière, vous pouvez utiliser
l'instruction booléenne diff . Selon comment vous lancez votre playbook, vous
Si vous n'êtes pas en mode différenciation et que l'instruction diff est à True
différenciation.
tasks:
- name: Add test text in /home/hatim/hatim.txt
lineinfile:
line: "test"
dest: /home/hatim/hatim.txt
state: present
diff: no
c'est-à-dire que vous avez accès à toutes les fonctionnalités du débogueur dans le
contexte de la tâche. Vous pouvez par exemple, vérifier ou modifier la valeur des
relancer votre tâche avec les nouvelles variables et les nouveaux arguments pour
Pour utiliser le débogueur d'Ansible vous devez utiliser l'instruction debugger qui
vos tâches.
- hosts: all
debugger: on_failed
tasks:
- name: Execute a command
command: ls -l /home/hatim
Quand vous entrez en mode debug vous pouvez utiliser différentes commandes :
module lineinfile avec un fichier qui n'existe pas, et par la suite je vais déboguer
cette tâche pour remettre le bon chemin de mon fichier. Voici déjà à quoi
tasks:
- name: Add test text in /home/hatim/hatim.txt
lineinfile:
line: "test"
dest: /home/hatim/hatim_fault.txt
state: present
debugger: on_failed
ansible-playbook main.yml
Résultat :
Nous savons par avance que l'erreur vient de la mauvaise valorisation du paramètre
dest , nous allons donc modifier sa valeur dans notre débogueur. Voici la
Si nous transformons notre démarche sous forme de commandes dans notre outil
(debug)> p result._result
{'_ansible_no_log': False,
(debug)> p task.args
{'_ansible_check_mode': False,
...
u'dest': u'/home/hatim/hatim_fault.txt',
u'line': u'test',
u'state': u'present'}
(debug)> p task.args['dest']
'/home/hatim/hatim.txt'
(debug)> redo
changed: [localhost]
Enfin vous pouvez activer le mode débogage pour chaque exécution de votre
ansible.cfg :
[defaults]
enable_task_debugger = True
# verbosité niveau 1
ansible-playbook -v main.yml
# verbosité niveau 2
ansible-playbook -vv main.yml
# verbosité niveau 3
ansible-playbook -vvv main.yml
# verbosité niveau 4
ansible-playbook -vvvv main.yml
[defaults]
verbosity = 3
Conclusion
vos playbooks , et vous avez désormais tous les outils à votre disposition pour
playbooks.