Управляемые узлы (Managed Nodes / Hosts): Серверы, рабочие станции, сетевые устройства и другие системы, которыми управляет Ansible. Информация о них хранится в файлах inventory.
Контрольный узел (Control Node): Машина, на которой установлен Ansible и с которой выполняются плейбуки.
Inventory: Файл (обычно в формате INI или YAML), содержащий список управляемых узлов и информацию о них (IP-адреса, имена хостов, группы, переменные).
* INI формат (пример):
ini
[webservers]
web1.example.com
web2.example.com
[databases]
db01.example.com ansible_host=192.168.1.10 ansible_user=admin ansible_ssh_pass=secret
[all:vars]
http_port=80
* YAML формат (пример):
yaml
all:
hosts:
web1.example.com:
web2.example.com:
vars:
http_port: 80
webservers:
hosts:
web1.example.com:
web2.example.com:
databases:
hosts:
db01.example.com:
ansible_host: 192.168.1.10
ansible_user: admin
ansible_ssh_pass: secret
Модули (Modules): Небольшие программы, выполняемые Ansible на управляемых узлах для достижения определенного состояния. Ansible поставляется с большим количеством встроенных модулей (например, apt
, yum
, service
, user
, file
, template
).
* Модули являются идемпотентными.
* Вызываются внутри задач в плейбуках.
* Документацию по модулям можно найти на сайте Ansible или с помощью команды ansible-doc <module_name>
.
Задачи (Tasks): Единицы действия в плейбуке. Каждая задача вызывает один или несколько модулей для выполнения определенной операции на управляемых узлах.
Плейбуки (Playbooks): Файлы в формате YAML, описывающие последовательность задач, которые Ansible должен выполнить на управляемых узлах.
* Плейбуки определяют, на каких хостах выполнять задачи, какие задачи выполнять и в каком порядке.
* Плейбуки являются основой автоматизации в Ansible.
Роли (Roles): Способ организации и повторного использования плейбуков, задач, переменных, обработчиков и файлов. Роли позволяют структурировать автоматизацию и делать ее более модульной.
* Стандартная структура директорий роли:
my_role/
├── defaults/
│ └── main.yml
├── files/
├── handlers/
│ └── main.yml
├── meta/
│ └── main.yml
├── tasks/
│ └── main.yml
├── templates/
└── vars/
└── main.yml
Переменные (Variables): Используются для хранения динамических значений, которые могут быть использованы в плейбуках, задачах и шаблонах. Переменные могут быть определены в inventory, файлах переменных, ролях или переданы через командную строку.
Факты (Facts): Информация об управляемых узлах, автоматически собираемая Ansible (например, операционная система, версия ядра, IP-адреса, объем памяти). Факты доступны как переменные в плейбуках.
Обработчики (Handlers): Специальные задачи, которые выполняются только при условии, что другая задача внесла изменения на управляемом узле. Обработчики обычно используются для перезапуска сервисов после обновления конфигурации. Уведомляются с помощью директивы notify
в задачах.