Ansible: vars_files no puede ver hechos u otras variables que un rol en el mismo juego puede

Creado en 10 ago. 2017  ·  3Comentarios  ·  Fuente: ansible/ansible

TIPO DE PROBLEMA
  • Informe de error
NOMBRE DEL COMPONENTE

libros de jugadas

VERSION ANSIBLE
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
CONFIGURACIÓN

Estoy importando roles y juegos de otro directorio, así que tengo en ansible.cfg

[defaults]
roles_path = ../../../deployment/playbooks/roles
SO / MEDIO AMBIENTE

OSX 10.10.5

RESUMEN

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.

PASOS PARA REPRODUCIR

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
RESULTADOS PREVISTOS

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

RESULTADOS ACTUALES

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

affects_2.4 bug core

Comentario más útil

tal vez deberías arreglar la documentación? No es exactamente obvio ...

Todos 3 comentarios

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.

Posible malentendido

¡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 ...

¿Fue útil esta página
0 / 5 - 0 calificaciones