playbooks
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
J'importe des rôles et des jeux depuis un autre répertoire, donc j'ai dans ansible.cfg
[defaults]
roles_path = ../../../deployment/playbooks/roles
OSX 10.10.5
Lorsque j'essaie de décider dynamiquement quel fichier de coffre-fort je veux importer en utilisant une variable dans vars_files (les tests unitaires ne devraient pas utiliser de mots de passe de production!) Pour les lectures importées, je ne peux pas le faire en utilisant group_vars, host_vars ou facts défini dans un jeu de configuration. Je ne peux utiliser qu'un argument de ligne de commande 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
est spécifiée sur la ligne de commande ansible en utilisant --extra-vars
le script s'exécute très bien. Il devrait fonctionner correctement lorsque vault_file
est défini à partir d'un fichier d'inventaire ou défini comme un fait dans unitenv_setup
, mais ce n'est pas le cas
En utilisant n'importe quelle méthode en plus de la ligne de commande pour définir vault_file
, j'obtiens l'erreur suivante:
PLAY [Setup the networks] *********************************************************************
ERROR! vars file {{ vault_file }} was not found
mode extrêmement verbeux:
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
Je constate qu'il y a quelque chose de complexe dans mon environnement de production que je n'arrive pas à entrer dans une simple reproduction partageable. En tout cas, voici la tentative de reproduction.
Salut!
Merci beaucoup pour votre soumission à Ansible. Cela signifie sincèrement beaucoup pour nous.
Nous pensons que le ticket que vous avez déposé est quelque peu mal compris, car une chose fonctionne un peu différemment de ce qui est indiqué.
faits, les variables d'hôte et de groupe. En gros, toutes les variables associées à l'hôte ne sont pas disponibles pour vars_files
, seules les variables à portée de lecture ou les variables supplémentaires sont disponibles à ce stade. Utilisez plutôt une tâche include_vars
.
À l'avenir, cela pourrait être un sujet plus adapté à la liste des utilisateurs, que vous pouvez également publier ici si vous souhaitez plus d'aide sur ce qui précède.
Merci encore pour cela et votre intérêt pour Ansible!
peut-être devriez-vous corriger la documentation? Pas vraiment évident ...
Commentaire le plus utile
peut-être devriez-vous corriger la documentation? Pas vraiment évident ...