Инвентарный файл#
Инвентарный файл - это файл, в котором описываются устройства, к которым 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. Первая включает в себя все хосты, а вторая, соответственно, хосты, которые не принадлежат ни одной из групп.