when tutorial run playbook how files español define arquitectura ansible

tutorial - ¿Variable que tiene el camino al actual libro de jugadas ansible que se está ejecutando?



arquitectura ansible (5)

Estaba usando un libro de jugadas como este para probar mis roles localmente:

--- - hosts: localhost roles: - role: .

pero esto dejó de funcionar con Ansible v2.2.

Depuré la solución antes mencionada de

--- - hosts: all tasks: - name: Find out playbooks path shell: pwd register: playbook_path_output - debug: var=playbook_path_output.stdout

y produjo mi directorio de inicio y no el "directorio de trabajo actual"

Me instalé con

--- - hosts: all roles: - role: ''{{playbook_dir}}''

por la solución anterior.

¿Hay una variable ansible que tenga la ruta absoluta al actual ansible-playbook que se está ejecutando?

contexto: estoy ejecutando / creando un script ansible contra localhost para configurar un docker mysql y quiero montar el volumen de datos en relación con el script ansible.

Por ejemplo, supongamos que compruebo un repositorio en ~/branch1/ y luego ejecuto ansible-playbook dev.yml Estaba pensando que debería guardar el volumen en ~/branch1/.docker_volume/ . Si lo ejecuté desde ~/branch2 entonces debería configurar el volumen a ~/branch2/.docker_volume/ .


Lamentablemente no lo hay. De hecho, la ruta absoluta es un poco sin sentido (y potencialmente confusa) en el contexto de cómo se ejecuta Ansible. En pocas palabras, cuando invoca un libro de jugadas, Ansible copia físicamente el módulo asociado con la tarea en un directorio temporal en la máquina de destino y luego invoca el módulo con los parámetros necesarios. Entonces, la ruta absoluta en la máquina de destino es solo un directorio temporal que solo contiene unos pocos archivos temporales dentro de él, y ni siquiera incluye el libro de jugadas completo. Además, conocer la ruta completa de un archivo en el servidor Ansible es prácticamente inútil en una máquina de destino a menos que esté replicando todo su árbol de directorios de Ansible en los destinos.

Para ver todas las variables definidas por Ansible, simplemente puede ejecutar el siguiente comando :

$ ansible -m setup hostname

¿Cuál es la razón por la que crees que necesitas saber el camino absoluto al libro de jugadas?


No hay una variable incorporada para este propósito, pero siempre puede encontrar la ruta absoluta del libro de jugadas con el comando "pwd" y registrar su salida en una variable.

- name: Find out playbook''s path shell: pwd register: playbook_path_output - debug: debug: var=playbook_path_output.stdout

Ahora la ruta está disponible en la variable playbook_path_output.stdout


No parece haber una variable que contenga exactamente lo que quieres.

Sin embargo, citando los documentos :

También disponible, inventory_dir es el nombre de ruta del directorio que contiene el archivo host de inventario de Ansible, el archivo_inventario es el nombre de ruta y el nombre de archivo que apunta al archivo host de inventario de Ansible.

playbook_dir contiene el directorio base de playbook.

Y finalmente, role_path devolverá el nombre de ruta del rol actual (desde 1.8). Esto solo funcionará dentro de un rol.

Dependiendo de su configuración, esas o la solución basada en $ pwd podrían ser suficientes.


Puede usar la variable playbook_dir .