Reputation: 3234
I am trying to use multiple inventory file and dynamic inventory with Ansible 1.4 and dev. Ansible returns No hosts matched.
I have a simulated scenario with two hosts file in a directory test the content of the directory is listed.
hosts1.ini
[group1]
test1 ansible_ssh_host=127.0.0.1
test2 ansible_ssh_host=127.0.0.2
[group2]
test3 ansible_ssh_host=127.0.0.3
hosts2.ini
[group3]
test4 ansible_ssh_host=127.0.0.4
[group4]
test5 ansible_ssh_host=127.0.0.4
test6 ansible_ssh_host=127.0.0.5
if I run ansible -i test --list-hosts all it returns No hosts matched.
I digged into the code and found dir.py with a small amended i got it too work. But I think i must have done something wrong and the hack is not required. Any ideas on how to solve it ?
Upvotes: 22
Views: 19864
Reputation: 13412
If you come to this question and want to use multiple inventories from different locations, just specify the -i
parameter multiple times:
ansible -i test -i another/path/to/inventory --list-hosts all
Be aware, that the group vars of the last specified inventory will be used for all inventories.
Upvotes: 3
Reputation: 179
You can also use INVENTORY_IGNORE_EXTS i.e. in the ansible.cfg:
[inventory]
ignore_extensions = {{(REJECT_EXTS + ('.orig', '.cfg', '.retry'))}}
or
[defaults]
inventory_ignore_extension = {{(REJECT_EXTS + ('.orig', '.cfg', '.retry'))}}
or via environment variable
ANSIBLE_INVENTORY_IGNORE='{{(REJECT_EXTS + ('.orig', '.cfg', '.retry'))}}' ansible --list-hosts all
Upvotes: 0
Reputation: 7148
Remove the .ini
from your file names:
$ ls test/
hosts1 hosts2
$ ansible -i test --list-hosts all
test1
test2
test3
test5
test6
test4
Upvotes: 34