Ansible — конфигурационный менеджер без агентов: управление по SSH, плейбуки на YAML, идемпотентность. Подходит для наведения порядка на серверах, разового развёртывания и повторяемых сценариев. Ниже — минимальный старт.
Идея и компоненты
Вы описываете желаемое состояние серверов в плейбуках (playbook) и задачах (tasks). Ansible подключается по SSH и выполняет модули (установка пакетов, копирование файлов, шаблоны, сервисы). Инвентарь (inventory) — список хостов и групп. Переменные и шаблоны — для разведения конфигов по окружениям.
Первый плейбук
Минимальный плейбук: имя, хосты (или группа из инвентаря), список задач. Задача — вызов модуля (yum, apt, copy, template, systemd). Запуск: ansible-playbook -i inventory playbook.yml. Режим проверки (--check) и лимит по хостам (-l) полезны перед применением на прод.
# playbook.yml — установка nginx на веб-серверы
- name: Install and start nginx
hosts: webservers
become: true
tasks:
- name: Install nginx
apt:
name: nginx
state: present
when: ansible_os_family == "Debian"
- name: Ensure nginx is started
systemd:
name: nginx
state: started
enabled: true
Роли и структура
Роль — каталог с tasks, handlers, templates, vars. Позволяет переиспользовать логику (например, роль nginx, роль postgresql). В плейбуке подключаете роли через roles:. Переменные роли задаются в vars/ или при вызове. Ansible Galaxy — готовые роли, но проверяйте содержимое перед использованием.
Компонент и назначение
| Компонент | Назначение |
|---|---|
| Playbook | YAML-файл: хосты, роли или tasks, переменные |
| Inventory | Список хостов и групп; -i путь или файл |
| Task | Вызов модуля: yum, apt, copy, template, systemd, command |
| Role | Каталог tasks/, handlers/, templates/, vars/ для переиспользования |
| Module | Идемпотентное действие: установка пакета, копирование файла, запуск сервиса |
Пример одной задачи в плейбуке: установка пакета nginx и запуск сервиса — два task'а с модулями apt (или yum) и systemd. Запуск: ansible-playbook -i inventory playbook.yml -l host1 (только host1); --check — режим проверки без изменений.
Практики применения
- Используйте плейбуки для разового развёртывания и наведения порядка на серверах; перед продом —
--checkи-lпо одному хосту. - Выносите повторяемую логику в роли; храните плейбуки и описание ролей в базе знаний — чат ответит «как у нас настроен X».
Кратко: плейбуки на YAML, инвентарь, модули и идемпотентность. Начните с простого плейбука из нескольких задач, затем выносите повторяемое в роли.