AnsiblePilot — Master Ansible Automation

AnsiblePilot is the leading resource for learning Ansible automation, DevOps, and infrastructure as code. Browse over 1,100 tutorials covering Ansible modules, playbooks, roles, collections, and real-world examples. Whether you are a beginner or an experienced engineer, our step-by-step guides help you automate Linux, Windows, cloud, containers, and network infrastructure.

Popular Topics

About Luca Berton

Luca Berton is an Ansible automation expert, author of "Ansible for VMware by Examples" and "Ansible for Kubernetes by Example" published by Apress, and creator of the Ansible Pilot YouTube channel. He shares practical automation knowledge through tutorials, books, and video courses to help IT professionals and DevOps engineers master infrastructure automation.

Ansible inventory_hostname vs ansible_hostname vs ansible_fqdn (Explained)

By Luca Berton · Published 2024-01-01 · Category: troubleshooting

Difference between Ansible inventory_hostname, ansible_hostname, ansible_host, and ansible_fqdn variables. When to use each, practical examples, common mistakes explained.

What is the difference between ansible_hostname vs inventory_hostname? These two ansible internal variables sometimes confuse one for another but they're fundamentally different. I'm Luca Berton and welcome to today's episode of Ansible Pilot.

ansible_hostname and ansible_fqdn

Read from the target machine hostname from the facts: • ansible_hostname read the hostname from the facts collected during the gather_facts • Same as the uname -n or hostname command-line • Need gather_facts enabled, otherwise the ansible_facts variable would be unavailable to use in your playbook • Same as hostname of the target host • As this is based on the gather_facts step. ansible_hostname not available in ad-hoc command

inventory_hostname

Read from Ansible inventory or hosts files: • inventory_hostname read the hostname from the inventory configuration or the hosts file. Could be different from the hostname configuration of the remote system. It could be only a name on the controller machine • inventory_hostname is always available to use in your playbook. • Could be different from the hostname of the target host • Available for both playbook and ad-hoc command

Playbook

Let me show you the difference between ansible_hostname vs inventory_hostname vs ansible_fqdn internal variables in a simple Ansible Playbook.

code • hostnames.yml • inventory

execution

idempotency

before execution

Conclusion

Now you know more about the Ansible internal variables ansible_hostname, inventory_hostname and ansible_fqdn. You know how to use it based on your use case.

Quick Comparison

| Variable | Source | Example | Needs gather_facts | |----------|--------|---------|-------------------| | inventory_hostname | Inventory file | web1 | No | | inventory_hostname_short | Inventory file (short) | web1 | No | | ansible_hostname | Remote host (hostname) | ip-10-0-1-42 | Yes | | ansible_fqdn | Remote DNS | ip-10-0-1-42.ec2.internal | Yes | | ansible_host | Inventory ansible_host | 10.0.1.42 | No | | ansible_nodename | Remote uname -n | ip-10-0-1-42 | Yes |

Example

When to Use Each

inventory_hostname — Most common

ansible_hostname — Actual hostname

ansible_fqdn — DNS/certificates

ansible_host — Connection address

In Templates

Common Pitfall

FAQ

Why is ansible_hostname different from inventory_hostname?

inventory_hostname is what YOU named the host in inventory. ansible_hostname is what the HOST calls itself (output of hostname). They can differ significantly, especially in cloud environments.

Which should I use in templates?For file paths and Ansible references: inventory_hostname • For DNS/SSL/network configs: ansible_fqdn • For IP-based configs: ansible_host or ansible_default_ipv4.address

How do I set the hostname to match inventory?

Related ArticlesAnsible Inventory GuideAnsible Roles Guide

Category: troubleshooting

Watch the video: Ansible inventory_hostname vs ansible_hostname vs ansible_fqdn (Explained) — Video Tutorial

Browse all Ansible tutorials · AnsiblePilot Home