web-dev-qa-db-fra.com

Comment inclure un fichier vars dans un fichier vars avec ansible?

Est-il possible d'inclure un fichier vars dans Ansible dans un autre fichier vars de manière dynamique?

C'est à dire. J'ai un fichier vars:

---
definitions:
- { product: web_v2, suite: mysuite, include: default_step.yml }
- { product: prod2, suite: mysuite2, include: default_step.yml }

Je veux le contenu de default_step.yml à ajouter au dictionnaire. Notez que ceci est dans un fichier vars donc la documentation sur la manière d'inclure un fichier vars à partir d'une tâche ne semble pas s'appliquer.

Tout ce à quoi je peux penser est de modéliser ce fichier avec jinja et d'utiliser son {% include %} fonction, puis utilisez ensuite include_vars de la tâche principale mais cela semble compliqué ...

38
jbrown

Malheureusement, les fichiers vars n'ont pas d'instruction include.

Vous pouvez soit placer tous les vars dans le dictionnaire definitions, soit ajouter les variables sous la forme d'un autre dictionnaire dans le même fichier.

Si vous ne voulez pas les avoir dans le même fichier, vous pouvez les inclure au niveau du playbook en ajoutant le fichier vars au début de la lecture:

---
- hosts: myhosts

  vars_files:
    - default_step.yml

ou dans une tâche:

---
- hosts: myhosts

  tasks:
    - name: include default step variables
      include_vars: default_step.yml
53
jonatan

Vous pouvez mettre vos serveurs dans le default_step group et ces vars s’appliqueront:

# inventory file
[default_step]
prod2
web_v2

Ensuite, déplacez votre default_step.yml fichier à group_vars/default_step.yml.

0
Yep_It's_Me

Je sais que c’est un vieux message, mais j’ai eu le même problème aujourd’hui. Ce que j’ai fait est simple: changer le script qui envoie mon livre de jeu de mon hôte local au serveur, avant de l’envoyer avec la commande maven, j’ai fait ceci:

cat common_vars.yml > vars.yml
cat snapshot_vars.yml >> vars.yml
# or 
#cat release_vars.yml >> vars.yml
mvn ....
0
bidak