{{ inventory_hostname }} variable

New to Ansible here, and have a question on using an inventory_hostname variable.

I have a playbook that deploys an add-on to numerous servers, using an inventory list of IP addresses setup as so:

[servers01]
xxx.xxx.xxx.xxx
yyy.yyy.yyy.yyy

[servers02]
zzz.zzz.zzz.zzz

and so on.

One of the plays edits a configuration file with:

  • name: edit inputs.conf for server name
    replace:
    dest=/path/to/inputs/conf
    regexp=‘PLACEHOLDER’
    replace=“{{ inventory_hostname }}”
    backup=no

This playbook has been tested in our local test environment and works well, but it has now been decided to use a text hostname instead of an IP address. I have updated the inventory file as follows:

[servers01]
hostname1 xxx.xxx.xxx.xxx
hostname2 yyy.yyy.yyy.yyy

[servers02]
hostname3 zzz.zzz.zzz.zzz

and so on.

My question is, does inventory_hostname pull out hostname1 or still pull out the IP address?

regards, Richard

Hi Richard,

I’m sure there’s more than one way to skin a cat, here, but I set up my hosts file thusly, and it does the job:

[rails]
rails0 ansible_ssh_host=xxx.xxx.xxx.xxx
rails1 ansible_ssh_host=xxx.xxx.xxx.xxx
rails2 ansible_ssh_host=xxx.xxx.xxx.xxx

I believe when doing this, you’re just aliasing the hostname for the ip number.

inventory_hostname should always reflect the 'hostname alias' provided
by the inventory, if you ALWAYS want the IPs use ansible_ssh_host
(ansbile_host in 2.0 and above).

no, indeed it worked as I had hoped, and as Roger and Brian spoke of. By using

[servers]
name ansible_ssh_host=xx.xx.xx.xx

it worked just fine. Ran into some other problems, but that’s a different post

regards, Richard