DomaNitro
DomaNitro

Reputation: 3234

Ansible multiple inventory file

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

Answers (3)

stackprotector
stackprotector

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

Booker B
Booker B

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

klenwell
klenwell

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

Related Questions