Pour se faire, je passe pas une commande shell et un register pour pouvoir ensuite itérer sur ces fichiers.
Le playbook
Ci-dessous mon playbook :- name: "Récupération fichier à supprimer du répertoire" shell: ls -1 /tmp/emplacement/*.xml | grep -v un-fichier.xml | cat register: files_to_remove - name: "Ménage dans le répertoire." file: name={{item}} state=absent with_items: files_to_remove.stdout_lines
Seul petit problème, la tache Récupération fichier à supprimer du répertoire m'indique tout le temps qu'il y a eu un changement alors qu'en réalité non.
Ci-dessous un exemple pour illustrer ça :
TASK: [task | Récupération fichier à supprimer du répertoire] ** changed: [localhost] TASK: [task | Ménage dans le répertoire.] ********************** ok: [localhost] PLAY RECAP ***************************************************** localhost : ok=1 changed=1 unreachable=0 failed=0
Bloquer ce faux changement
Dans ce cas, il est intéressant d'utiliser l'option changed_when avec une condition afin de dire à Ansible que ma commande n'a rien modifiée (ici, ça sera False systématiquement).Si on l'applique à notre cas, notre main.yml ressemble maintenant à la chose suivante :
- name: "Récupération fichier à supprimer du répertoire" shell: ls -1 /tmp/emplacement/*.xml | grep -v un-fichier.xml | cat register: files_to_remove changed_when: False - name: "Ménage dans le répertoire." file: name={{item}} state=absent with_items: files_to_remove.stdout_lines
Dorénavant mes appels ne marquent plus cette tâche comme ayant changée quelque chose.
TASK: [task | Récupération fichier à supprimer du répertoire] ** ok: [localhost] TASK: [task | Ménage dans le répertoire.] ********************** ok: [localhost] PLAY RECAP ************************************************** localhost : ok=2 changed=0 unreachable=0 failed=0
Aucun commentaire:
Enregistrer un commentaire