Dans ma vision de Ansible, on devrait pouvoir executer plusieurs fois un playbook sans avoir de parasites, doublons etc.
J'ai trouver une solution en passant par "register" pour éviter ce genre de problème.
- Je vérifie si il y a la chaine de caractère en amont, avec shell j'utilise la command linux "grep" pour voir si la chaine de caractère est présente
- Ensuite j'utilise register pour stocker le resultat tout en ignorant les erreurs avec ignore_errors: true (sans ça le script ansible s'arrête à cause d'une erreur fatale)
- Puis je modifie /etc/hosts en utilisant lineinfile avec when qui permet de vérifier si le résultat stocké précédement dans register est vide ou non (fait un failed ou non).
- Si le register hosts_grep est vide; la commande lineinfile s'execute.
- j'espère être clair ! ;-)
roles/config/tasks/main.yml
# Vérification de /etc/hosts
- name: Test for line
shell: grep openldap /etc/hosts
ignore_errors: true
register: hosts_grep
# Modification de /etc/hostsBien faire attention à l'indentation !
- name: Modification /etc/hosts
sudo: true
lineinfile:
dest=/etc/hosts
regexp=''
insertafter=EOF
line="10.250.0.108 openldap01\n10.250.0.109 openldap02"
state=present
when: hosts_grep|failed
Aucun commentaire:
Enregistrer un commentaire