Ansible ne prend pas de groupe vars sans le charger manuellement

Dans mon local.yml je suis capable d'exécuter les variables playbook et reference group_vars/all cependant, je ne suis pas en mesure d'accéder à des variables au sein d' group_vars/phl-stage. Supposons ce qui suit.

ansible-playbook -i phl-stage site.yml

j'ai une variable, appelons-la deploy_path c'est différent pour chaque environnement. Je place la variable à l'intérieur d' group_vars/< environment name >. Si je inclure le fichier group_vars/phl-stage à l'intérieur de vars_files ça fonctionne, mais j'aurais pensé que le fichier de groupe serait automatiquement chargé?

site.yml

- include: local.yml

local.yml

- hosts: 127.0.0.1
  connection: local

  vars_files:
    - "group_vars/perlservers"
    - "group_vars/deploy_list"

group_vars/phl-stade

[webservers]
phl-web1
phl-web2

[perlservers]
phl-perl1
phl-perl2

[phl-stage:children]
webservers
perlservers

structure du répertoire:

group_vars
  all
  phl-stage
  phl-prod
site.yml
local.yml
25
demandé sur Mxx 2014-05-20 22:54:23
la source

1 ответов

vous déroutez un peu la structure.

  • group_vars répertoire contient des fichiers pour chaque groupe d'hôtes défini dans votre fichier d'inventaire. Les fichiers définissent les variables que les hôtes membres peuvent utiliser.
  • le fichier d'inventaire ne réside pas dans le group_vars dir, il doit être à l'extérieur.
  • hôtes qui sont membres d'un groupe peuvent utiliser ses variables, donc à moins de mettre 127.0.0.1 dans un groupe, il ne sera pas en mesure d'utiliser tout group_vars à côté de ceux définis dans group_vars/all.

Ce que vous voulez, c'est ce dir structure:

group_vars/
   all
   perlservers
   phl-stage
hosts
site.yml
local.yml

votre fichier hosts devrait ressembler à ceci, en supposant que 127.0.0.1 est juste un serveur de staging et non perl ou un serveur web:

[webservers]
phl-web1
phl-web2

[perlservers]
phl-perl1
phl-perl2

[phl-stage]
127.0.0.1

[phl-stage:children]
webservers
perlservers

ainsi vous définissez quels hôtes appartiennent à quel groupe dans l'inventaire, puis pour chaque groupe vous définissez des variables dans son fichier group_vars.

54
répondu hkariti 2014-05-21 18:44:57
la source

Autres questions sur