Ответ
Ansible — это инструмент для автоматизации конфигурации, управления инфраструктурой и развертывания приложений, использующий декларативную модель и работающий по схеме без агентов (agentless) через SSH (на Linux) или WinRM (на Windows).
Ключевые концепции и опыт работы:
- Плейбуки (Playbooks): YAML-файлы, описывающие желаемое состояние системы.
- Инвентарь (Inventory): Список управляемых хостов, может быть статическим файлом или генерироваться динамически.
- Модули (Modules): Идиоматические команды для выполнения задач (например,
apt,copy,service). - Роли (Roles): Способ организации плейбуков и файлов для повторного использования.
- Шаблоны Jinja2: Для генерации конфигурационных файлов с переменными.
- Ansible Vault: Для безопасного хранения секретов.
Пример плейбука для базовой настройки сервера:
---
- name: Настройка веб-сервера
hosts: webservers
become: yes # Повышение привилегий через sudo
tasks:
- name: Установка последней версии Nginx
apt:
name: nginx
state: latest
update_cache: yes
- name: Запуск и включение службы Nginx
service:
name: nginx
state: started
enabled: yes
- name: Копирование HTML-страницы
copy:
src: files/index.html
dest: /var/www/html/index.html
Почему это важно: Ansible упрощает управление инфраструктурой как кодом (IaC), обеспечивает идемпотентность (повторное выполнение приводит к тому же результату) и легко интегрируется в CI/CD-конвейеры (Jenkins, GitLab CI).