Man pages for ansible
and ansible-playbook
define -i
option as:
-i PATH, --inventory=PATH
The PATH to the inventory hosts file, which defaults to
/etc/ansible/hosts.
Yet to run on a local system the following syntax is used in examples:
ansible -i "localhost," -c local -m ping localhost
What exactly is this "localhost,"
with comma at the end (otherwise it is treated as filename) and how does it relate to PATH
?
This is (now, at least) a documented feature. From Ansible's documentation:
-i, --inventory, --inventory-file
specify inventory host path or comma separated host list. --inventory-file is deprecated
(emphasis added)
What's still not in the manual is that "comma separated host list" means that you need to add a comma even if the "list" is a single item, to distinguish between "target a single host called hostname
":
$ ansible -i 'hostname,' ...
and "load inventory from a file called hostname
":
$ ansible -i 'hostname' ...
If anyone out there has time, maybe you could submit a pull request to change the help text to explain this (and to add a hyphen in "comma-separated", but maybe that's just me..)