accéder à la variable hôte de l'inventaire dans le playbook ansible
Je suis en utilisant ansible 2.1. J'ai l'inventaire qui suit le fichier host et un rôle d'être appelé par un jeu qui a besoin d'accéder à l'hôte de fichier variable. Toute réflexion sur la façon d'y accéder (actuellement à obtenir une erreur):
fichier hôte
[test1]
test-1 ansible_ssh_host=abc.def.ghi.jkl ansible_ssh_port=1212
[test2]
test2-1 ansible_ssh_host=abc.def.ghi.mno ansible_ssh_port=1212
[test3]
test3-1 ansible_ssh_host=abc.def.ghi.pqr ansible_ssh_port=1212
test3-2 ansible_ssh_host=abc.def.ghi.stu ansible_ssh_port=1212
[all:children]
test1
test2
test3
rôle
J'ai essayé d'accéder au rôle dans les façons suivantes:
{{ hostvars.ansible_ssh_host }}
&&
{{ hostvars.test1.ansible_ssh_host }}
Je suis en train d'essayer d'accéder à la ansible_ssh_host dans le test1 section.
Erreur
fatal: [localhost]: FAILED! => {"failed": true, "msg": "'ansible.vars.hostvars.HostVars object' has no attribute 'ansible'"}
source d'informationauteur ali haider
Vous devez vous connecter pour publier un commentaire.
Vous êtes sur la bonne voie sur
hostvars
.Cette la magie de la variable est utilisé pour accéder à des informations sur d'autres hôtes.
hostvars
est un hachage de l'inventaire des noms d'hôte en tant que clés.Pour accéder aux champs de chaque hôte, utilisez
hostvars['test-1']
,hostvars['test2-1']
, etc.ansible_ssh_host
est obsolète en faveur deansible_host
depuis la version 2.0.Donc, vous devez d'abord supprimer "_ssh" à partir de l'inventaire des hôtes des arguments (c'est à dire à devenir "ansible_user", "ansible_host", et "ansible_port"), puis dans votre rôle appeler avec:
Vous pouvez accéder à l'ordinateur hôte de groupe à l'aide de vars:
Si vous avez besoin d'une valeur spécifique de spécifique de l'hôte, vous pouvez utiliser:
Vous devriez être en mesure d'utiliser le nom de la variable directement
Ou vous pouvez aller à travers les hostvars sans avoir à spécifier l'hôte littéralement
à l'aide de la la magie de la variable
inventory_hostname