Question:
In the best practices page, there is an example that uses hosts.yml
for hosts files:
In the docs, however, I can only find the INI syntax for writing hosts files.
What is the syntax for the inventory files in YAML?
Answer:
Yes.
It’s been deprecated in version 0.6 in 2012 and reintroduced in a commit first included in version 2.1 in 2016.
The example file on GitHub contains the guidelines and examples:
- Comments begin with the ‘#’ character
- Blank lines are ignored
- Top level entries are assumed to be groups
- Hosts must be specified in a group’s hosts: and they must be a key (: terminated)
- groups can have children, hosts and vars keys
- Anything defined under a hosts is assumed to be a var
- You can enter hostnames or ip addresses
- A hostname/ip can be a member of multiple groups
Ex 1: Ungrouped hosts, put in ‘ungrouped’ group
12345678 ungrouped:hosts:green.example.com:ansible_ssh_host: 191.168.100.32blue.example.com:192.168.100.1:192.168.100.10:Ex 2: A collection of hosts belonging to the ‘webservers’ group
1234567 webservers:hosts:alpha.example.org:beta.example.org:192.168.1.100:192.168.1.110:Ex 3: You can create hosts using ranges and add children groups and vars to a group.
The child group can define anything you would normally add to a group
12345678910 testing:hosts:www[001:006].example.com:vars:testing1: value1children:webservers:hosts:beta.example.org: