Ответ
Ansible — это система управления конфигурациями и автоматизации задач, широко используемая в DevOps и бэкенд-разработке. Она позволяет описывать состояние инфраструктуры в виде кода (Infrastructure as Code).
Ключевые концепции:
- Агентless (Безагентная архитектура): Ansible не требует установки специальных агентов на управляемые узлы. Взаимодействие происходит по стандартному протоколу SSH (для Linux) или WinRM (для Windows).
- Playbooks: Сценарии автоматизации, написанные на языке YAML. Они описывают, какие задачи (tasks) на каких хостах (hosts) нужно выполнить.
- Идемпотентность: Одна из важнейших характеристик. Повторный запуск одного и того же playbook'а не приведет к изменениям, если система уже находится в целевом состоянии. Это делает автоматизацию предсказуемой и безопасной.
- Inventory: Простой текстовый файл (INI или YAML), в котором перечислены управляемые серверы (хосты) и их группы (например,
[webservers]
,[dbservers]
). - Модули: Готовые блоки кода для выполнения конкретных задач, таких как установка пакета (
apt
,yum
), копирование файла (copy
), работа с сервисами (service
) или шаблонизация конфигураций (template
).
Пример простого Playbook:
- name: Настройка веб-сервера
hosts: webservers
become: yes # Выполнять задачи с правами суперпользователя (sudo)
tasks:
- name: Убедиться, что Nginx установлен
apt:
name: nginx
state: present # Состояние: должен присутствовать
- name: Запустить и включить автозапуск Nginx
service:
name: nginx
state: started # Состояние: должен быть запущен
enabled: yes # Включить автозапуск при загрузке системы
Принцип работы:
- Ansible читает
inventory
-файл, чтобы определить список целевых хостов. - Подключается к хостам по SSH.
- Временно копирует на хост Python-скрипт (соответствующий модулю) и выполняет его.
- После выполнения удаляет временные файлы и возвращает результат.