Какой простой способ автоматического создания не существующего каталога в недоступном

В моей книге Ansible много раз мне нужно создать файл там

 - name: Copy file
   template:
     src: code.conf.j2
     dest: "{{project_root}}/conf/code.conf"

теперь много раз conf dir не существует. Затем я должен создать больше задачи для создания этого каталога сначала.

Есть ли простой способ автоматического создания dir, если не существует с какой-либо опцией

Ответ 1

Прямо сейчас, это единственный способ

- name: Ensures {{project_root}}/conf dir exists
  file: path={{project_root}}/conf state=directory
- name: Copy file
  template:
    src: code.conf.j2
    dest: "{{project_root}}/conf/code.conf"

Ответ 2

Чтобы обеспечить успех при использовании полного пути, используйте recurse = yes

- name: ensure custom facts directory exists
    file: >
      path=/etc/ansible/facts.d
      recurse=yes
      state=directory

Ответ 3

AFAIK, единственный способ сделать это - использовать параметр state=directory. Хотя модуль template поддерживает большинство опций copy, что в свою очередь поддерживает большинство опций file, вы не можете использовать с ним что-то вроде state=directory. Более того, это было бы довольно запутанным (означает ли это, что {{project_root}}/conf/code.conf является каталогом? Или это означает, что сначала нужно создать {{project_root}}/conf/.

Поэтому я не думаю, что это возможно прямо сейчас, без добавления предыдущей задачи file.

- file: 
    path: "{{project_root}}/conf"
    state: directory
    recurse: yes

Ответ 4

вы можете создать папку, используя следующую, в зависимости от вашей доступной версии.

Последняя версия 2 <

- name: Create Folder
  file: 
   path: "{{project_root}}/conf"
   recurse: yes
   state: directory

Старая версия:

- name: Create Folder
  file: 
      path="{{project_root}}/conf"
      recurse: yes
      state=directory

Refer - http://docs.ansible.com/ansible/latest/file_module.html