Q: Obscure standard variables?

Hi,
I am working trhough some tutorials, and I have a question; I hope this is the proper forum to post it.
In the solution provided with the tutorial I see some variables used that I do not understand:

inventory_hostname
and:
groups[“webservers”]

I do not find these in the ansible facts (ansible servera -m setup).
Also I cannot evaluate them using JINJA2 template “{{ inventory_hostname }}”, apparently they are something else.
“webservers” is a group in my inventory, but where is the hash “groups” defined or coming from?

The documentation appears to be silent about these things.

On a related note, how am I supposed to evaluate variables from the facts? e.g. “{{ ansible_memory_mb}}” gives an error stating that I am not allowed to use JINJA2 templates here.

Tom

Hi,

groups[“webservers”] means that you have to define a group named webservers within your hosts file.

inventory_hostname is the name of the hostname as configured in Ansible’s inventory hosts file.

Regards,
Tom

Hi Tom,
I suspected that much. My questions are:

  • Where are these coming from? I do not find documented that if you make a section [webservers] in your inventory, that automagically an array “groups” is created that has “webservers” as a member. Nor that there is such a thing as inventory_hostname. In my inventory file I know I can specify ungrouped hosts and named groups of hosts: but I find no references to the variable inventory_hostname. From the way it is used in the examples I gather it is the current hostname that ansible is working on plucked from the inventory.
  • Also these variables appear to be used differently as other variables, i.e. not with “{{ }}”, so they are really odd. What syntax do we need to use for which items?

A colleague of mine explained that these variables are created when the inventory is read.
You can get to see those with:
ansible -m debug -a “var=vars”
This “vars” appears to be undocumented.
HTH