Что такое Ansible?

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

Ответ

Ansible — это инструмент для автоматизации конфигурации, развертывания приложений и оркестрации, реализующий принцип Infrastructure as Code (IaC). Он использует декларативные YAML-файлы (плейбуки) для описания желаемого состояния системы.

Ключевые принципы:

  • Агентная архитектура: Управление осуществляется по SSH (Linux) или WinRM (Windows), без необходимости установки специального агента на целевые хосты.
  • Идемпотентность: Повторный запуск плейбука приводит систему в желаемое состояние, не вызывая лишних изменений, если конфигурация уже соответствует описанию.
  • Простота: Низкий порог входа благодаря человекочитаемому синтаксису YAML.

Основные компоненты:

  1. Inventory: Файл со списком управляемых хостов, сгруппированных для удобства.
  2. Playbooks: YAML-сценарии, содержащие последовательность задач (tasks).
  3. Modules: Переиспользуемые, идемпотентные единицы работы (например, apt, copy, service). Ansible поставляется с сотнями встроенных модулей.
  4. 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