web-dev-qa-db-fra.com

Comment fonctionnent les Host_vars ansibles?

J'ai créé un dépôt pour reproduire mon scénario.

Essentiellement, nous chargeons un inventaire avec nos hôtes, nous pouvons remplacer les valeurs par hôte via l'inventaire sans problème, mais nous aimerions essayer d'utiliser Host_vars.

Je ne suis pas sûr à 100% de la façon dont les vars de l'hôte sont associés à l'hôte. J'ai lu le repo ansible pour des exemples mais n'arrive pas à le faire fonctionner comme documenté donc je cherche un examen minutieux de notre configuration.

Lorsque j'exécute la commande ansible-playbook -i ansible.inventory site.yml -clocal dans mon exemple de dépôt, j'attends le Host_vars/{{ ansible_hostname }} fichier à lire et remplacer tout ce qui est défini dans les variables, mais cela ne semble pas se produire.

Quelqu'un peut-il me montrer un exemple de travail pour que je puisse voir où nous nous trompons?

26
mjallday

Étant donné que la documentation n'est pas très spécifique sur ce sujet, voici l'ordre de priorité des vars dans la version actuelle d'Ansible:

  1. Vars mis en ligne de commande -e foo = set_on_cmd_line
  2. Vars dans le vars_files: bloquer dans la pièce
  3. Vars dans le vars: bloquer dans la pièce
  4. Vars s'installe Host_vars /
  5. Vars s'installe group_vars /
  6. Variables par défaut des rôles rôles /.../ valeurs par défaut/main.yml

Ici, vous pouvez voir votre ordre de priorité du plus petit au plus grand (les dernières variables listées ayant été priorisées) dans les ansible docs .

Vous devriez penser à Host_vars et group_vars plus comme des valeurs par défaut plutôt que des remplacements pour des valeurs par défaut. Si vous avez le même ensemble var en vous vars_files: block comme vous le faites dans votre exemple il aura priorité.

33
jarv