web-dev-qa-db-fra.com

Ansible: Comment supprimer un dossier et un fichier dans un répertoire en une seule tâche?

J'utilise Ansible 2.3.2.0 et j'essaie de supprimer un fichier et un dossier d'un répertoire dans une tâche. 

Maintenant j'ai ce

tasks:

  - name: Removing existing war
    file:
      path: /usr/share/Tomcat/webapps/app.war
      state: absent

  - name: Removing existing folder
    file:
      path: /usr/share/Tomcat/webapps/app
      state: absent

Je ne peux pas simplement supprimer le dossier webapps car je ne souhaite pas supprimer les autres fichiers et dossiers qu'il contient. Je souhaite réduire le nombre de tâches car j'utilise l'authentification Duo Push, ce qui augmente le temps de déploiement. J'ai essayé de passer en boucle sur des fichiers et des fichiers globs, mais pour une raison quelconque, cela ne fonctionne jamais. 

http://docs.ansible.com/ansible/latest/playbooks_loops.html#looping-over-files

5
HarlemSquirrel

Il suffit de parcourir les deux valeurs:

tasks:
  - name: Removing
    file:
      path: "{{ item }}"
      state: absent
    with_items:
      - /usr/share/Tomcat/webapps/app.war
      - /usr/share/Tomcat/webapps/app

Mais cela créera quand même 2 exécutions de tâches: une pour chaque élément.

10
zigarn

Si vous souhaitez simplement supprimer un répertoire et son contenu, utilisez simplement le module file et indiquez le chemin d'accès au répertoire uniquement:

tasks:
 - name: Removing
   file:
     path: /usr/share/Tomcat/webapps/app
     state: absent

Voir ce post: Ansible: Comment supprimer des fichiers et des dossiers dans un répertoire?

et des documents ansible:

S'ils sont absents, les répertoires seront supprimés de manière récursive et les fichiers ou les liens symboliques seront dissociés.

voir: http://docs.ansible.com/ansible/latest/file_module.html

0
spencerwjensen