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, je dois passer des variables dynamiquement. C'est un mot de passe confidentiel, donc j'utilise "vault" en ansible.
En ce que mon exigence est de savoir comment passer include_vars
dans le tasks\main.yml
devant 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épertoires 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 le fichier sample_tasks en utilisant une variable passée dans sample_vault.yml
fichier avant d'exécuter les tâches hôtes en utilisant ansible. Si j'utilise une variable supplémentaire, le mot de passe est visible, donc je n'en ai pas besoin.
Lorsque j'utilise include_vars
dans mon tasks/main.yml
fichier, il affiche l'erreur suivante:
ERREUR! 'include_vars' n'est pas un attribut valide pour un jeu
Vous ne pouvez pas utiliser include_vars
de cette façon, il n'est disponible que 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 autre réponse pour l'explication.
Vous pouvez utiliser vars_files
comme ça:
- hosts: localhost
vars_files:
- sample_vault.yml
tasks:
name: "free task"
command: ls -a
Ou passez un fichier en tant que variables supplémentaires:
ansible-playbook --ask-vault-pass -e @sample_vault.yml myplaybook.yml