Skip to main content

Inventory

Spage has the ability to parse inventory through many different formats. The format described in this document is a result of closely following the Ansible inventory format.

Inventory file​

The inventory file is a YAML file that contains the inventory for Spage.

inventory.yaml
all:
hosts:
localhost:
host: 127.0.0.1
my_var: "Host specific variable!"
my_group:
hosts:
localhost:
vars:
my_group_var: "Group specific variable!"

You can define variables specifically on a host or group level.

host_vars and group_vars​

Whenever an inventory file is specified through either the -i flag or the inventory configuration option, Spage will automatically load the host_vars and group_vars files.

Spage searches for host_vars and group_vars files in the same directory as the inventory file.

For example, take this file tree:

File tree
root/
├─ inventory.yaml
├─ host_vars/
│ ├── localhost.yaml
│ └── my_host.yaml
└─ group_vars/
└── my_group.yaml

Running spage inventory list -i root/inventory.yaml will load the variables from the host_vars and group_vars directories.

Inventory plugins​

Spage supports inventory plugins. These plugins are used to extend the inventory file format.

Ansible inventory plugin compatibility​

Spage supports custom inventory plugins written to be used by Ansible. This does require the Python run-time fallback to be available on the host that runs Spage.

Spage Inventory CLI​

You can also use the spage inventory list command to list the hosts and their variables in the inventory.

Listing the inventory
$ spage inventory list -i my_inventory.yaml
{
"_meta": {
"hostvars": {}
},
"all": {
"hosts": [],
"vars": {
"dir_allgroup_var": "dir_allgroup_var_value",
"file_allgroup_var": "file_allgroup_var_value"
}
},
"somegroup": {
"hosts": [],
"vars": {
"dir_group_var": "dir_group_var_value",
"file_group_var": "file_group_var_value"
}
}
}