Что такое Ansible Inventory
Ansible Inventory — это файл или набор файлов, которые содержат информацию о целевых хостах, на которых будет выполняться автоматизация. Inventory определяет, какие узлы (серверы, устройства и т.д.) Ansible будет управлять, а также позволяет группировать эти узлы и настраивать переменные для каждой группы или отдельных хостов.
Основные аспекты Ansible Inventory:
- Типы Inventory:
- Static Inventory: Это простой текстовый файл (обычно
hosts
илиinventory
), где хосты и группы хостов определены статически. - Dynamic Inventory: Используется, когда инфраструктура динамична (например, в облачных окружениях). Ansible может использовать скрипты или плагины, чтобы автоматически генерировать Inventory на основе внешних источников, таких как AWS, GCP и другие.
- Static Inventory: Это простой текстовый файл (обычно
- Формат Static Inventory: Static Inventory обычно представлен в формате INI или YAML.
Пример INI-файла:
1 2 3 4 5 6 7 8 9 10 11 12 |
[webservers] webserver1.example.com webserver2.example.com [dbservers] dbserver1.example.com dbserver2.example.com [all:vars] ansible_user=deploy ansible_ssh_private_key_file=/path/to/key.pem |
В этом примере:
- [webservers] и [dbservers] — это группы хостов.
- webserver1.example.com и dbserver1.example.com — это хосты, которые принадлежат соответствующим группам.
- [all] — это секция для переменных, применимых ко всем хостам.
Пример YAML-файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
all: hosts: webserver1.example.com: webserver2.example.com: children: webservers: hosts: webserver1.example.com: webserver2.example.com: dbservers: hosts: dbserver1.example.com: dbserver2.example.com: vars: ansible_user: deploy ansible_ssh_private_key_file: /path/to/key.pem |
- В YAML-формате структура более иерархическая, что может быть полезно для сложных конфигураций.
- Группы и подгруппы:
- Группы позволяют организовывать хосты по функциональному признаку (например,
webservers
,dbservers
). - Подгруппы можно создавать, чтобы иерархически организовать группы, что позволяет более гибко управлять инфраструктурой.
- Группы позволяют организовывать хосты по функциональному признаку (например,
- Переменные:
- Переменные могут быть определены на уровне всей инфраструктуры, группы, хоста или динамически через внешний источник.
- В INI-файлах переменные задаются через секции
group:vars
илиhost:vars
. - В YAML-файлах переменные указываются в секциях
vars
илиhost_vars
.
- Dynamic Inventory:
- Dynamic Inventory генерируется скриптами или плагинами, которые подключаются к API облачных провайдеров (например, AWS, Azure) и возвращают актуальный список хостов.
- Пример команды для использования динамического Inventory:
-
12ansible-playbook -i inventory_aws_ec2.yml playbook.yml
В этом случае
inventory_aws_ec2.yml
— это динамический Inventory, который Ansible автоматически обновляет перед выполнением задач.
Пример простого использования:
Для запуска playbook на хостах из Inventory, достаточно использовать следующую команду:
1 2 |
ansible-playbook -i inventory playbook.yml |
Здесь inventory
— это файл Inventory, в котором указаны хосты, а playbook.yml
— это ваш playbook.
Recommended Posts
Плейбук Ansible по развертыванию haproxy
15.02.2024