Что такое Ansible и какова его основная модель работы?

«Что такое Ansible и какова его основная модель работы?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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).