В моей пьесе Ansible много раз мне нужно создать там файл
- name: Copy file
template:
src: code.conf.j2
dest: "{{project_root}}/conf/code.conf"
теперь много раз conf
dir отсутствует. Затем мне нужно создать еще одну задачу, чтобы сначала создать этот каталог.
Есть ли простой способ автоматически создать каталог, если он не существует с какой-либо опцией
Ответы:
Прямо сейчас это единственный способ
источник
recurse=yes
кfile
вызовуmkdir -p
поведение типаdirname
фильтр ansible для получения каталога, в котором находится файл.Чтобы обеспечить успех с полным путем, используйте recurse = yes
источник
recurse=yes
только рекурсивно применяют разрешения. Однако в документации указано, что это происходит автоматически, начиная с версии 1.7, поэтомуrecurse
вполне может быть устаревшим.Если вы используете Ansible> = 2.0, существует также фильтр dirname, который вы можете использовать для извлечения части каталога из пути. Таким образом, вы можете просто использовать одну переменную для хранения всего пути, чтобы обе задачи никогда не выходили из синхронизации.
Так, например, если у вас есть playbook с
dest_path
определенной в такой переменной, вы можете повторно использовать ту же переменную:источник
AFAIK, единственный способ это может быть сделано с помощью
state=directory
опции. Хотяtemplate
модуль поддерживает большинствоcopy
параметров, которые, в свою очередь, поддерживают большинствоfile
параметров, вы не можете использоватьstate=directory
с ним что-то подобное . Более того, это может сбить с толку (будет ли это означать, что{{project_root}}/conf/code.conf
это каталог? Или это означает, что он{{project_root}}/conf/
должен быть создан первым.Поэтому я не думаю, что сейчас это возможно без добавления предыдущей
file
задачи.источник
Согласно последнему документу, когда состояние установлено как каталог, вам не нужно использовать параметр recurse для создания родительских каталогов, об этом позаботится файловый модуль.
этого достаточно, чтобы создать данные родительских каталогов и протестировать их с помощью foo
обратитесь к описанию параметра - " состояние " http://docs.ansible.com/ansible/latest/modules/file_module.html
источник
вы можете создать папку, используя следующее, в зависимости от вашей доступной версии.
Последняя версия 2 <
Старая версия:
Обратитесь - http://docs.ansible.com/ansible/latest/file_module.html
источник
модуль копирования создает каталог, если его там нет. В этом случае он создал каталог resolved.conf.d
источник