Man pages for ansible
and ansible-playbook
define -i
option as:
-i PATH, --inventory=PATH
The PATH to the inve
According to Michael DeHann, who created Ansible, the comma trick you're referring to is a hack that shouldn't be relied upon. It's a hack to run Ansible without an inventory file, for cases where you're going to run against localhost. That way you don't actually have to create an inventory file that just lists localhost.
This is (now, at least) a documented feature. From the man page:
-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..)
Actually, when you want to run commands against a specific host, don't add -i
, instead, run it in the following way:
ansible localhost -m ping
Use -i
only to specify the path for dynamic inventory or hosts.