How to use the command ansible-inventory (with examples)
The ansible-inventory
command is used to display or dump an Ansible inventory. It allows you to see the structure of the inventory, including hosts, groups, variables, and other details. You can also output the inventory in different formats, such as JSON or YAML, and save the inventory to a file.
Use case 1: Display the default inventory
Code:
ansible-inventory --list
Motivation: This use case is useful when you want to quickly view the default inventory configured in Ansible. It provides an overview of all the hosts and groups available in the inventory, which can be helpful for troubleshooting or understanding the infrastructure setup.
Explanation:
--list
: Specifies that the inventory information should be displayed as a list. This is the default format.
Example Output:
{
"_meta": {
"hostvars": {
"host1": {},
"host2": {},
...
}
},
"all": {
"children": [
"group1",
"group2",
...
]
},
"group1": {
"hosts": [
"host1",
"host2",
...
]
},
"group2": {
"hosts": [
"host3",
"host4",
...
]
},
...
}
Use case 2: Display a custom inventory
Code:
ansible-inventory --list --inventory path/to/file_or_script_or_directory
Motivation: When working with multiple inventory files or dynamic inventories generated by scripts or external systems, you can use this command to display a specific inventory. This helps in understanding the structure and contents of the custom inventory.
Explanation:
--inventory
: Specifies the path to the inventory file or script or directory that should be used. This allows you to specify a custom inventory instead of the default.
Example Output:
{
"_meta": {
"hostvars": {
"host1": {},
"host2": {},
...
}
},
"all": {
"children": [
"group1",
"group2",
...
]
},
"group1": {
"hosts": [
"host1",
"host2",
...
]
},
"group2": {
"hosts": [
"host3",
"host4",
...
]
},
...
}
Use case 3: Display the default inventory in YAML
Code:
ansible-inventory --list --yaml
Motivation: By default, the inventory is displayed in JSON format. However, if you prefer YAML for better readability or compatibility with other tools, you can use this command to display the inventory in YAML format.
Explanation:
--yaml
: Specifies that the inventory information should be displayed in YAML format.
Example Output:
all:
children:
group1:
hosts:
host1:
host2:
group2:
hosts:
host3:
host4:
_meta:
hostvars:
host1: {}
host2: {}
host3: {}
host4: {}
Use case 4: Dump the default inventory to a file
Code:
ansible-inventory --list --output path/to/file
Motivation: If you want to save the default inventory to a file for future reference or to use it with other tools, this use case allows you to dump the inventory to a specified file.
Explanation:
--output
: Specifies the path to the file where the inventory should be saved. The inventory will be saved in JSON format by default.
Example Output: The default inventory will be saved as a JSON file in the specified path.
Conclusion:
The ansible-inventory
command is a powerful tool for displaying and manipulating Ansible inventories. It provides various options to view the inventory structure, output formats, and file-based operations. Understanding and utilizing these use cases can greatly enhance your workflow and troubleshooting capabilities with Ansible.