Ответ
Ansible — это инструмент для автоматизации конфигурации, развертывания приложений и оркестрации, реализующий принцип Infrastructure as Code (IaC). Он использует декларативные YAML-файлы (плейбуки) для описания желаемого состояния системы.
Ключевые принципы:
- Агентная архитектура: Управление осуществляется по SSH (Linux) или WinRM (Windows), без необходимости установки специального агента на целевые хосты.
- Идемпотентность: Повторный запуск плейбука приводит систему в желаемое состояние, не вызывая лишних изменений, если конфигурация уже соответствует описанию.
- Простота: Низкий порог входа благодаря человекочитаемому синтаксису YAML.
Основные компоненты:
- Inventory: Файл со списком управляемых хостов, сгруппированных для удобства.
- Playbooks: YAML-сценарии, содержащие последовательность задач (tasks).
- Modules: Переиспользуемые, идемпотентные единицы работы (например,
apt,copy,service). Ansible поставляется с сотнями встроенных модулей. - Roles: Способ организации плейбуков и связанных файлов для повторного использования.
Пример плейбука для установки Nginx:
- name: Install and start Nginx
hosts: web_servers
become: yes # Повышение привилегий
tasks:
- name: Install Nginx package
apt:
name: nginx
state: latest
update_cache: yes
- name: Ensure Nginx is running and enabled
service:
name: nginx
state: started
enabled: yes