Как я могу запустить выполняемую задачу только в том случае, если файл или каталог НЕ существует?

В Ansible playbook я хочу запускать задачи, если каталог имеет не.

- 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

Но что мне делать, чтобы гарантировать выполнение следующих задач, только если этот каталог не существует?

- name: Extract java if dir not existing
  command: tar xzf /tmp/jdk1.8.0_71 chdir=/opt

Ответы

Ответ 1

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

Ответ 2

Это параметр creates идеально подходит для:

- 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 проверит, существует ли /opt/jdk1.8.0_71 и запускается только команда, если она не существует.

Документация: http://docs.ansible.com/ansible/command_module.html