web-dev-qa-db-fra.com

comment utiliser include_vars dans ansible

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

12
jake

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
24