tutorial tower source open logo hat ansible

tower - ansible tutorial



¿Cuál es la manera más fácil de crear automáticamente un directorio no existente en ansible? (6)

AFAIK, la única forma en que esto se puede hacer es usar la opción state=directory . Mientras que el módulo de template admite la mayoría de las opciones de copy , lo que a su vez admite la mayoría de las opciones de file , no puede usar algo como state=directory con él. Además, sería bastante confuso (¿significaría que {{project_root}}/conf/code.conf es un directorio? O querría decir que {{project_root}}/conf/ debería crearse primero.

Así que no creo que esto sea posible ahora sin agregar una tarea de file previa.

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

En mi libro de jugadas 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 conf dir no está allí. Entonces, tengo que crear más tareas para crear ese directorio primero.

¿Hay alguna manera fácil de auto crear el directorio si no existe con alguna opción


De acuerdo con el último documento, cuando el estado está configurado para ser directorio, no es necesario utilizar el parámetro recursivo para crear directorios principales, el módulo de archivos se encargará de ello.

- name: create directory with parent directories file: path: /data/test/foo state: directory

esto es lo suficientemente caro como para crear los datos de los directorios principales y probar con foo

Consulte la descripción del parámetro - " estado " http://docs.ansible.com/ansible/latest/modules/file_module.html


En este momento, esta es la única manera

- 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"


Para garantizar el éxito con una ruta completa use recurse = yes

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


Si está ejecutando Ansible> = 2.0 también existe el filtro de nombre de base que puede usar para extraer el directorio de una ruta. De esta forma, puede usar una variable para mantener la ruta completa y asegurarse de que ambas tareas nunca se desincronicen.

Entonces, por ejemplo, si tiene playbook con dest_path definido en una variable como esta, puede reutilizar la misma variable:

- name: My playbook vars: dest_path: /home/ubuntu/some_dir/some_file.txt tasks: - name: Make sure destination dir exists file: path: "{{ dest_path | dirname }}" state: directory recurse: yes # now this task is always save to run no matter how dest_path get''s changed arround - name: Add file or template to remote instance template: src: foo.txt.j2 dest: "{{ dest_path }}"


puede crear la carpeta usando lo siguiente dependiendo de su versión ansible.

Última versión 2 <

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

Versión antigua:

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

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