web-dev-qa-db-fra.com

Ansible get hostname tel que défini dans l'inventaire

Dans mon inventaire, je définis les hôtes comme ceci:

 [server1]
 141.151.176.223

Je cherche une variable qui garde le nom server1, car je l'utilise pour définir le nom d'hôte du serveur.

inventory_hostname est défini sur 141.151.176.223ansible_hostname ainsi que inventory_hostname_short est défini sur 148.

Pour contourner ce problème, je mets ma propre variable comme ceci:

 [server1]
 141.151.176.223 hostname=server1

mais je ne suis pas satisfait de cette approche.

Des idées?

4
NeverEndingQueue

Explication

Si le fichier d'inventaire a été défini de cette façon:

[server1_group]
server1 ansible_Host=141.151.176.223

Ensuite, vous pouvez accéder à:

  • server1 avec le inventory_hostname fait;

  • 141.151.176.223 avec le ansible_Host fait;

  • server1_group avec group_names|first (group_names fait contient une liste de tous les groupes auxquels le serveur appartient, first sélectionne le premier élément de cette liste).

Indépendamment de ce qui précède, ansible_hostname fait contient le nom d'hôte tel qu'il est défini sur l'hôte lui-même (la valeur est définie lors de la collecte des faits).


Solution

Vous devez utiliser une déclaration ansible_Host standard pour pointer sur l'adresse IP de la cible et définir le nom d'hôte d'inventaire sur la manière dont vous souhaitez faire référence au serveur dans les playbooks Ansible.

En particulier, vous pouvez ignorer la définition des groupes et définir simplement:

server1 ansible_Host=141.151.176.223
10
techraf

La déclaration [server1] est le nom d'un groupe et non d'un hôte (même si vous n'affectez qu'un seul hôte à ce groupe).

Comme ansible permet de placer un hôte dans plusieurs groupes, vous ne pouvez obtenir les noms qu’en tant que tableau: http://docs.ansible.com/ansible/latest/playbooks_variables.html#magic-variables-and-how- to-access-information-about-other-hosts

Je pense donc que la solution de contournement que vous avez trouvée est la voie à suivre, à moins que vous ne puissiez utiliser de vrais noms d'hôte au lieu d'adresses IP (à l'aide de DNS ou simplement d'un fichier d'hôtes statique).

0
Costi Ciudatu