hostprofi.ru
Подобрать хостинг
Термин·буква A

Ansible

краткое определение

Agentless инструмент автоматизации конфигурации серверов через SSH с YAML-playbooks без установки агентов.

Ansible — инструмент автоматизации IT-инфраструктуры без агентов (agentless). Управляет конфигурацией серверов, деплоем приложений и оркестрацией задач через SSH. Конфигурация описывается в YAML-файлах (playbooks), что делает её читаемой и версионируемой в Git.

Как работает

Ansible подключается к серверам по SSH от управляющего хоста, передаёт и выполняет Python-модули, удаляет следы выполнения. Не требует установки агента на управляемых хостах. Inventory-файл содержит список серверов и группы. Playbook — последовательность «plays», каждый play применяет набор tasks к группе хостов.

# inventory.yml
all:
  children:
    webservers:
      hosts:
        web01.example.com:
        web02.example.com:
    databases:
      hosts:
        db01.example.com:

# playbook.yml
- name: Configure web servers
  hosts: webservers
  become: yes
  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes
    - name: Start Nginx
      service:
        name: nginx
        state: started
        enabled: yes

История

Ansible создан Майклом Де Хааном (Michael DeHaan) в 2012 году. Название взято из романа Урсулы Ле Гуин «Рококо» — устройство для мгновенной связи. Red Hat поглотила Ansible в 2015 году за $150 млн. IBM поглотила Red Hat в 2019 году за $34 млрд — Ansible стал частью IBM. AWX (Tower) — enterprise-версия с веб-GUI, RBAC, API. AWX open-source, Ansible Automation Platform — коммерческая версия.

Ключевые концепции

Idempotency — повторное выполнение playbook не меняет состояние, если оно уже соответствует желаемому. apt: state=present не переустановит пакет если он уже установлен. Roles — переиспользуемые наборы tasks, handlers, variables и templates. Ansible Galaxy — реестр community roles: ansible-galaxy install geerlingguy.nginx. Vault — шифрование секретов прямо в playbooks: ansible-vault encrypt_string 'dbpassword'.

Ansible vs Chef vs Puppet

Ansible agentless и YAML-based — самый низкий порог входа. Chef и Puppet требуют агентов и используют Ruby DSL. Для команд без опыта в Ruby Ansible предпочтителен. Chef лучше для сложных conditional-логик. Puppet — декларативная модель, идеальна для enterprise с тысячами серверов.

На что обращать внимание

Ansible медленен при управлении сотнями серверов: каждая задача — отдельное SSH-соединение. pipelining = True в ansible.cfg и ControlMaster SSH ускоряют выполнение. Для параллельного выполнения: -f 20 (20 форков). Ansible не управляет своим состоянием — нет «drift detection» из коробки (в Puppet/Chef есть). Используйте CI/CD для регулярного запуска playbooks и проверки drift.

Практическое применение Ansible на хостинге

Ansible решает проблему ручного управления парком серверов. Когда серверов 5 и больше, ручная конфигурация становится источником ошибок и несогласованности. Ansible позволяет описать желаемое состояние сервера в YAML-плейбуке и применить его ко всем хостам одновременно.

Типичные задачи: установка и настройка Nginx, деплой приложения из Git, настройка firewall, ротация SSH-ключей, обновление пакетов. Плейбук запускается командой ansible-playbook -i inventory.ini deploy.yml. Inventory-файл содержит список серверов с группами: [webservers], [databases], [monitoring].

Ansible Galaxy — публичный репозиторий готовых ролей. Роль geerlingguy.nginx или geerlingguy.mysql устанавливает и конфигурирует сервис за минуты без написания кода. Это ускоряет онбординг новых серверов и стандартизирует конфигурации.

В отличие от Chef, Ansible не требует агента на управляемых серверах — работает через SSH. Это упрощает начало работы: достаточно SSH-доступа и Python на целевом хосте. Для CI/CD Ansible нередко встраивается в пайплайн: после сборки артефакта Jenkins или GitLab CI вызывает Ansible для деплоя на целевые серверы.

Другие термины