Salut,
Je me suis mis a Ansible depuis peu et franchement ca a l'air bien quand on a plusieurs machines a gerer, sauf que je suis tombe sur un cas qui me chiffonne.
J'ai cree un playbook avec 2 roles, et lorsque je le lance j'ai un comportement que je n'attends pas. Maintenant j'espere que les plus habitues a Ansible pourront me dire si ma maniere de voir les choses n'est pas correcte, ou si c'est Ansible qui ne se comporte pas comme il devrait.
Tout d'abord, mon playbook :
---
- hosts: host1,host2
roles:
- check_text
- copy_file
Mon check_text :
---
- name: Check text in file
blockinfile:
path: ~/myfile
block: |
mytext
infile
Et mon copy_file :
---
- name: Copy file
copy:
src: ~/testfile
dest: ~/testfile
mode: 0640
Lorsque je lance mon playbook j'ai la sortie suivante :
PLAY [host1,host2] *********************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************************************************************
ok: [host1]
ok: [host2]
TASK [check_text : Check text in file] ***********************************************************************************************************************************************************************************
ok: [host1]
fatal: [host2]: FAILED! => {"changed": false, "msg": "Path /home/myuser/myfile does not exist !", "rc": 257}
TASK [copy_file : Copy file] ****************************************************************************************************************************************************************************************************
ok: [host1]
to retry, use: --limit @/home/utilisateur/.ansible-retry/my_playbook.retry
PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
host1 : ok=3 changed=0 unreachable=0 failed=0
host2 : ok=1 changed=0 unreachable=0 failed=1
Comme on peut le voir, la tache "check_text : Check text in file" echoue pour host2, car le fichier n'existe pas (ce qui est normal, parce qu'effectivement il n'existe pas), mais le probleme est que la tache "copy_file : Copy file" n'est du coup plus executee pour host2.
J'avais l'impression que le fait de creer 2 roles differents faisait en sorte que ceux-ci etaient independant l'un de l'autre, et que du coup le second role devait etre lance egalement sur le host2 meme si le premier role a echoue.
C'est ma comprehension qui n'est pas bonne?
Du coup, comment faire pour que les 2 roles ne soient pas dependant l'un de l'autre, parce que dans ce cas precis, le fait que la premiere tache echoue ne devrait pas empecher l'execution de la seconde tache sur host2.
Merci.