libros de jugadas
ansible 2.4.0
config file = None
configured module search path = [u'/Users/szabop/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /Library/Python/2.7/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0
Estoy importando roles y juegos de otro directorio, así que tengo en ansible.cfg
[defaults]
roles_path = ../../../deployment/playbooks/roles
OSX 10.10.5
Cuando trato de decidir dinámicamente qué archivo de bóveda quiero importar usando una variable en vars_files (¡las pruebas unitarias no deberían usar contraseñas de producción!) Para jugadas importadas, no puedo hacerlo usando group_vars, host_vars o hechos ambientado en una obra de preparación. Solo puedo usar un argumento de línea de comando ansible.
ansible-playbook -t app_test -i inventories/localhost/local.hosts unit.yml
---
#
# network.yml
#
- name: Setup the networks
hosts: dockerhosts
vars_files:
- demoVars.yml
- "{{ vault_file }}" # this will only be valid if declared on the ansible command line.
roles:
- role: debug # note this will print out a valid {{ vault_file }} in all cases (but comment out the vars_files line or it will error first)
- role: network_setup
options:
internal: "{{ networks.internal }}"
external: "{{ networks.external }}"
nginx: "{{ networks.nginx }}"
tags:
- setup
- standalone
- app_test
# unit.yml
---
- name: create facts used to compose variables later in this playbook
hosts: dockerhosts
vars:
esTmpDir: "/tmp/es"
roles:
- role: unitenv_setup
tags:
- app_test
- import_playbook: ../../../deployment/playbooks/network.yml
Si la variable vault_file
se especifica en la línea de comando ansible usando --extra-vars
el script se ejecuta bien. Debería funcionar bien cuando vault_file
se establece desde un archivo de inventario o se establece como un hecho en unitenv_setup
, pero no
Usando cualquier método además de la línea de comando para configurar vault_file
, obtengo el siguiente error:
PLAY [Setup the networks] *********************************************************************
ERROR! vars file {{ vault_file }} was not found
modo extremadamente detallado:
ETA: ran handlers
META: ran handlers
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable
PLAY [Setup the networks] *********************************************************************
Read vars_file 'demoVars.yml'
ERROR! vars file {{ vault_file }} was not found
Observo que hay algo complejo en mi entorno de producción que parece que no puedo conseguir en una reproducción simple para compartir. De todos modos, aquí está el intento de reproducirse.
¡Hola!
Muchas gracias por su envío a Ansible. Sinceramente, significa mucho para nosotros.
Creemos que la multa que ha presentado se está malinterpretando un poco, ya que una cosa funciona un poco diferente de lo que se indica.
hechos, vars de host y de grupo ... básicamente, cualquier 'vars asociada a host' no está disponible por vars_files
, en ese momento solo están disponibles vars con alcance de juego o vars adicionales. En su lugar, utilice una tarea include_vars
.
En el futuro, este podría ser un tema más adecuado para la lista de usuarios, que también puede publicar aquí si desea obtener más ayuda con lo anterior.
¡Gracias una vez más por esto y su interés en Ansible!
tal vez deberías arreglar la documentación? No es exactamente obvio ...
Comentario más útil
tal vez deberías arreglar la documentación? No es exactamente obvio ...