web-dev-qa-db-fra.com

Comment puis-je exécuter une tâche ansible uniquement si un fichier ou un répertoire n'existe PAS?

Dans un playbook Ansible, je veux exécuter des tâches si un répertoire existe pas.

- name: Check for Java exists in /opt     
  stat: path=/opt/jdk1.8.0_71
  register: p
  when: p.stat.isdir is defined and p.stat.isdir

Mais que dois-je faire pour que les tâches suivantes ne s’exécutent que si ce répertoire n’existe pas?

- name: Extract Java if dir not existing
  command: tar xzf /tmp/jdk1.8.0_71 chdir=/opt
30
RobertK
- name: Extract Java if dir not existing
  command: tar xzf /tmp/jdk1.8.0_71 chdir=/opt
  when: not p.stat.exists
25
helloV

C’est ce pour quoi le paramètre creates convient parfaitement:

- name: Extract Java if dir not existing
  command: tar xzf /tmp/jdk1.8.0_71 
  args: 
      chdir: /opt 
      creates: /opt/jdk1.8.0_71

Ansible vérifiera si /opt/jdk1.8.0_71 existe et n'exécute la commande que si elle n'existe pas.

Documentation: http://docs.ansible.com/ansible/command_module.html

42
Bruce P