En mi libro de jugadas de Ansible muchas veces necesito crear un archivo allí
- name: Copy file
template:
src: code.conf.j2
dest: "{{project_root}}/conf/code.conf"
ahora muchas veces confdir no está ahí. Entonces tengo que crear más tareas para crear ese directorio primero.
¿Hay alguna manera fácil de crear automáticamente un directorio si no existe con alguna opción?

Respuestas:
Ahora mismo, esta es la única forma
fuente
recurse=yesa lafilellamada para obtener elmkdir -pcomportamiento de tipodirnamepara obtener el directorio que contiene un archivo.Para garantizar el éxito con una ruta completa, use recurse = yes
fuente
recurse=yessolo aplican permisos de forma recursiva. Sin embargo, la documentación indica que esto ocurre automáticamente desde la v1.7, por lorecurseque bien podría estar obsoleto.Si está ejecutando Ansible> = 2.0, también existe el filtro de nombre de directorio que puede usar para extraer la parte del directorio de una ruta. De esa manera, solo puede usar una variable para mantener la ruta completa y asegurarse de que ambas tareas nunca se desincronicen.
Entonces, por ejemplo, si tiene un libro de jugadas
dest_pathdefinido en una variable como esta, puede reutilizar la misma variable:fuente
AFAIK, la única forma en que esto podría hacerse es usando la
state=directoryopción. Si bien eltemplatemódulo admite la mayoría de lascopyopciones, que a su vez admite la mayoría de lasfileopciones, no puede usar algo asístate=directory. Además, sería bastante confuso (¿significaría que{{project_root}}/conf/code.confes un directorio? O significaría que{{project_root}}/conf/debería crearse primero.Entonces, no creo que esto sea posible ahora sin agregar una
filetarea anterior .fuente
De acuerdo con el último documento, cuando el estado está configurado como directorio, no necesita usar el parámetro recurse para crear directorios principales, el módulo de archivo se encargará de ello.
esto es suficiente para crear los datos del directorio principal y probar con foo
consulte la descripción del parámetro - " estado " http://docs.ansible.com/ansible/latest/modules/file_module.html
fuente
puede crear la carpeta usando lo siguiente dependiendo de su versión de ansible.
Versión más reciente 2 <
Versión antigua:
Consulte: http://docs.ansible.com/ansible/latest/file_module.html
fuente
El módulo de copia crea el directorio si no está allí. En este caso creó el directorio resuelto.conf.d
fuente