2 votes

Ansible : Quel est l'ordre/la préséance des variables en cas de fichiers 'extra_vars' multiples ?

Dans cette question plus ancienne sur " Can extra_vars recevoir plusieurs fichiers ? "L'auteur de l'article a répondu à la question en disant qu'il était possible d'utiliser plusieurs fichiers vars en utilisant simplement plusieurs fichiers --extra-vars paramètres.

La question suivante que je me pose est que, dans un tel cas, où le ansible-playbook La ligne de commande a deux --extra-vars paramètres, chacun pointant vers un fichier différent, quel est l'ordre ou la préséance de ces fichiers ?

De même, que se passe-t-il si les deux fichiers ont le même nom de var (par exemple, my_host ) en eux ?

Par exemple, disons que j'ai 2 fichiers, extraVars1.yml y extraVars2.yml et dans le ansible-playbook ligne de commande que j'ai :

ansible-playbook... --extra-vars "@extraVars1.yml" --extra-vars "@extraVars2.yml"

et le extraVars1.yml a :

my_host: 1.2.3.4

et le extraVars2.yml a :

my_host: 5.6.7.8

Quelle sera la valeur de la my_host var est quand le playbook est exécuté ?

Merci ! Jim

2voto

U880D Points 778

Selon la documentation Ansible sur Utilisation des variables y Comprendre la précédence des variables

extra vars (par exemple, -e "user=my_user" ) (ont toujours la priorité)

En général, Ansible donne la priorité aux variables qui ont été définies plus récemment ...

Cela signifie que le dernier défini gagne.

Faisons un petit test ici avec un vars.yml le livre de jeu.

---
- hosts: localhost
  become: false
  gather_facts: false

  vars:

    my_host: 9.0.0.0

  tasks:

  - name: Show value
    debug:
      msg: "{{ my_host }}"

L'exécution de ansible-playbook vars.yml aura pour résultat une sortie de

TASK [Show value] ***
ok: [localhost] =>
  msg: 9.0.0.0

L'exécution de ansible-playbook -e "@extraVars1.yml" vars.yml aura pour résultat une sortie de

TASK [Show value] ***
ok: [localhost] =>
  msg: 1.2.3.4

L'exécution de ansible-playbook -e "@extraVars1.yml" -e "@extraVars2.yml" vars.yml aura pour résultat une sortie de

TASK [Show value] ***
ok: [localhost] =>
  msg: 5.6.7.8

L'exécution de ansible-playbook -e "@extraVars2.yml" -e "@extraVars1.yml" vars.yml aura pour résultat une sortie de

TASK [Show value] ***
ok: [localhost] =>
  msg: 1.2.3.4

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X