Несложный файл с несколькими инвентарями

Я пытаюсь использовать несколько файлов инвентаря и динамические ресурсы с помощью Ansible 1.4 и dev. Ansible возвращает Нет хостов, сопоставленных.

У меня есть симулированный сценарий с двумя файлами hosts в тестовом каталоге, в котором указано содержимое каталога.

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

если я запустил ansible -i test -list-hosts, все, что он возвращает Нет хостов, сопоставленных.

Я выкопал код и нашел dir.py с небольшим исправлением, и я получил его тоже. Но я думаю, что я, должно быть, сделал что-то не так, а хак не нужен. Любые идеи о том, как его решить?

Ответы

Ответ 1

Удалите .ini из ваших имен файлов:

$ ls test/
hosts1  hosts2

$ ansible -i test --list-hosts all 
    test1
    test2
    test3
    test5
    test6
    test4

Ответ 2

Инвентарь как папка

В папке ваших плейбуков создайте папку под названием инвентарь.

mkdir inventory

Теперь переместите текущий файл инвентаризации (часто называемый хостами) в эту папку

mv hosts inventory

Чтобы показать возможность использования нового инвентаря, есть 2 варианта:

  • Использование ansible.cfg

    Создайте файл ansible.cfg в той же папке, что и ваши плейеры, и добавьте строки:

    [defaults]
    
    hostfile = inventory
    
  • Аргумент командной строки

    При следующем запуске вашей пьесы просто добавьте -i inventory:

    ansible-playbook -i inventory my_playbook.yml