Ответ 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"
В моей книге Ansible много раз мне нужно создать файл там
- name: Copy file
template:
src: code.conf.j2
dest: "{{project_root}}/conf/code.conf"
теперь много раз conf
dir не существует. Затем я должен создать больше задачи для создания этого каталога сначала.
Есть ли простой способ автоматического создания dir, если не существует с какой-либо опцией
Прямо сейчас, это единственный способ
- 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"
Чтобы обеспечить успех при использовании полного пути, используйте recurse = yes
- name: ensure custom facts directory exists
file: >
path=/etc/ansible/facts.d
recurse=yes
state=directory
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
вы можете создать папку, используя следующую, в зависимости от вашей доступной версии.
Последняя версия 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