Инвентарный файл#

Инвентарный файл - это файл, в котором описываются устройства, к которым Ansible будет подключаться.

Хосты и группы#

В инвентарном файле устройства могут указываться используя IP-адреса или имена. Устройства могут быть указаны по одному или разбиты на группы.

Файл может быть описан в формате INI или YAML. Пример файла в формате INI:

r5.example.com

[cisco_routers]
192.168.255.1
192.168.255.2
192.168.255.3
192.168.255.4

[cisco_edge_routers]
192.168.255.1
192.168.255.2

Название, которое указано в квадратных скобках - это название группы. В данном случае, созданы две группы устройств: cisco_routers и cisco_edge_routers.

Обратите внимание, что адреса 192.168.255.1 и 192.168.255.2 находятся в двух группах. Это нормальная ситуация, один и тот же адрес или имя хоста, можно помещать в разные группы.

Таким образом можно применять отдельно какие-то политики для группы cisco_edge_routers, но в то же время, когда необходимо настроить что-то, что касается всех маршрутизаторов, можно использовать группу cisco_routers.

К разбиению на группы надо подходить внимательно. Ansible это еще и, в какой-то мере, система описания инфраструктуры. Позже мы будем рассматривать групповые переменные и роли, где значение групп будет заметно в полной мере.

По умолчанию, инвентарный файл находится в /etc/ansible/hosts.

При этом обычно лучше создавать свой инвентарный файл и использовать его. Для этого нужно, либо указать его при запуске ansible, используя опцию -i <путь>, либо указать файл в конфигурационном файле Ansible.

Если в группу надо добавить несколько устройств с однотипными именами, можно использовать такой вариант записи:

[cisco_routers]
192.168.255.[1:5]

Такая запись означает, что в группу попадут устройства с адресами 192.168.255.1-192.168.255.5. Этот формат записи поддеживается и для имен хостов:

[cisco_routers]
router[A:D].example.com

Группа из групп#

Ansible также позволяет объединять группы устройств в общую группу. Для этого используется специальный синтаксис:

[cisco_routers]
192.168.255.1
192.168.255.2
192.168.255.3

[cisco_switches]
192.168.254.1
192.168.254.2

[cisco_devices:children]
cisco_routers
cisco_switches

Группы по-умолчанию#

По-умолчанию, в Ansible существует две группы: all и ungrouped. Первая включает в себя все хосты, а вторая, соответственно, хосты, которые не принадлежат ни одной из групп.