Книга: PyNEng
Назад: 23. Основы Ansible
Дальше: Ad-Hoc команды

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

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

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

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

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

Файл описывается в формате 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.

Часто инвентарный файл размещают в каталоге inventories, который создают в корне каталога с playbook. Это дает возможность хранить информацию про хосты вместе с остальной информацией в системе контроля версий.

Если инфраструктура большая и хостов много, то имеет смысл разбить инвентарный файл на несколько частей:

inventories/ ├── branch-A │   ├── cisco-routers │   └── cisco-switches ├── branch-B │   ├── cisco-routers │   └── cisco-switches └── headquarter     ├── cisco-routers     ├── cisco-switches     └── juniper-routers 

Если какое-то из устройств использует нестандартный порт SSH, порт можно указать после имени или адреса устройства, через двоеточие (ниже показан пример).

Такой вариант указания порта работает только с подключениями OpenSSH и не работает с paramiko.

Пример инвентарного файла, с использованием нестандартных портов для SSH:

[cisco-routers] 192.168.255.1:22022 192.168.255.2:22022 192.168.255.3:22022  [cisco-switches] 192.168.254.1 192.168.254.2 

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

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

Назад: 23. Основы Ansible
Дальше: Ad-Hoc команды