Загрузка...

Блог

Ansible для сисадминов: основы

Ansible для сисадминов: основы

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 — готовые роли, но проверяйте содержимое перед использованием.

Компонент и назначение

КомпонентНазначение
PlaybookYAML-файл: хосты, роли или 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, инвентарь, модули и идемпотентность. Начните с простого плейбука из нескольких задач, затем выносите повторяемое в роли.