2016-10-01 3 views
2

J'ai créé ma propre bibliothèque personnalisée, j'ai ajouté ma bibliothèque personnalisée dans le dossier commun de mon référentiel. En cela, j'ai besoin de passer des variables dynamiquement. C'est un mot de passe confidentiel, donc j'utilise "Vault" dans l'Ansible.comment utiliser include_vars dans ansible

En ce que mon exigence est de savoir comment passer include_vars dans le tasks\main.yml avant les hôtes.

par exemple: mytasks.yml

- include_vars: sample_vault.yml 
- include: sample_tasks.yml 
- hosts: localhost 
    tasks: 
    name: "free task" 
    command: ls -a 

ma structure de répertoire comme ceci:

myfolder 
    - common 
     -library 
     -my file.py 
     - sample_tasks.yml 

    - mytasks 
     -mytasks.yml(my main master playbook file) 
     -sample_vault.yml (note:i create this using vault for confidential purpose) 
     - roles 
     -myrole 

ici Je dois exécuter fichier sample_tasks en utilisant une des variables transmises dans le fichier sample_vault.yml avant l'exécution des tâches hôtes à l'aide ansible. Si j'utilise des variables supplémentaires, le mot de passe est visible, donc je n'en ai pas besoin.

Lorsque j'utilise include_vars dans mon dossier tasks/main.yml, il montre l'erreur suivante:

ERROR! 'include_vars' is not a valid attribute for a Play

Répondre

7

Vous ne pouvez pas utiliser include_vars cette façon, il est uniquement disponible pour une utilisation sous tasks.
Si sample_tasks.yml est une liste de tâches, vous ne pouvez pas non plus l'utiliser au niveau du playbook. Voir mon other answer pour l'explication.

Vous pouvez utiliser vars_files comme ceci:

- hosts: localhost 
    vars_files: 
    - sample_vault.yml 
    tasks: 
    name: "free task" 
    command: ls -a 

Ou passer un fichier en tant que variables supplémentaires:

ansible-playbook --ask-vault-pass -e @sample_vault.yml myplaybook.yml 
+0

Merci pour la grande réponse! Je faisais face à un problème avec 'include_vars' du fichier voûté comme' environment' dans ansible 2+, en passant à 'vars_files' tout fonctionne! – andi