What's the difference between inventory_hostname and ansible_hostname

Ansible

Ansible Problem Overview


All I could find was this from the docs:

> Additionally, inventory_hostname is the name of the hostname as configured in Ansible’s inventory host file. This can be useful for when you don’t want to rely on the discovered hostname ansible_hostname or for other mysterious reasons. If you have a long FQDN, inventory_hostname_short also contains the part up to the first period, without the rest of the domain.

Is there any actual difference between inventory_hostname and ansible_hostname variables in Ansible? If so, then which one should I use and when?

Ansible Solutions


Solution 1 - Ansible

  • inventory_hostname - As configured in the ansible inventory file (eg: /etc/ansible/hosts). It can be an IP address or a name that can be resolved by the DNS
  • ansible_hostname - As discovered by ansible. Ansible ssh's into the host and gathers some facts. As part of the fact, it also discovers its hostname which is stored in ansible_hostname.
Which one should you use?

hostvars is a dictionary which has an entry for each inventory host. If you want to access host information, you need to use the inventory_hostname. If you want to use/print the name of the host as configured on the host, you should use ansible_hostname since most likely the IP will be used in the inventory file.

Important: To use ansible_hostname, you need to gather facts:

gather_facts: true

Otherwise, you will get a message that ansible_hostname is not defined.

"ansible_hostname": "VARIABLE IS NOT DEFINED!"

Try this with one host to understand the differences

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBabken VardanyanView Question on Stackoverflow
Solution 1 - AnsiblehelloVView Answer on Stackoverflow