web-dev-qa-db-fra.com

Quelle est la différence entre inventory_hostname et ansible_hostname?

Tout ce que je pouvais trouver était celui-ci de la documentation :

De plus, inventory_hostname est le nom du nom d’hôte tel que configuré dans le fichier hôte de l’inventaire d’Ansible. Cela peut être utile lorsque vous ne voulez pas vous fier au nom d’hôte découvert ansible_hostname ou pour d’autres raisons mystérieuses. Si vous avez un nom de domaine complet long, inventory_hostname_short contient également la partie jusqu'à la première période, sans le reste du domaine.

Existe-t-il une différence réelle entre les variables inventory_hostname et ansible_hostname dans Ansible? Si oui, alors lequel devrais-je utiliser et quand?

28
Babken Vardanyan
  • inventory_hostname - Tel que configuré dans le fichier d'inventaire ansible (par exemple: /etc/ansible/hosts). Il peut s’agir d’une adresse IP ou d’un nom pouvant être résolu par le serveur DNS.
  • ansible_hostname - Comme découvert par ansible. Ansible ssh 's dans l'hôte et rassemble quelques faits. En fait, il découvre également son nom d’hôte qui est stocké dans ansible_hostname.

Lequel devriez-vous utiliser?

hostvars est un dictionnaire comportant une entrée pour chaque hôte d'inventaire. Si vous souhaitez accéder aux informations sur l'hôte, vous devez utiliser le inventory_hostname. Si vous souhaitez utiliser/imprimer le nom de l'hôte tel qu'il est configuré sur l'hôte, vous devez utiliser ansible_hostname étant donné que l'adresse IP sera probablement utilisée dans le fichier d'inventaire.

Important: Pour utiliser ansible_hostname, vous devez rassembler des faits:

gather_facts: true

Sinon, vous recevrez un message indiquant que ansible_hostname n'est pas défini.

"ansible_hostname": "VARIABLE IS NOT DEFINED!"

Essayez ceci avec un hôte pour comprendre les différences

  tasks:
    - debug: var=inventory_hostname
    - debug: var=ansible_hostname
    - debug: var=hostvars
43
helloV