Skip to content

📘 Ansible


1. Общие сведения

Наименование:
Ansible

Описание:
Ansible — это open-source платформа для автоматизации задач управления конфигурацией, развертывания приложений и оркестрации ИТ-инфраструктуры. Работает по принципу "agentless", используя протокол SSH для взаимодействия с удаленными хостами.

Тип системы:
Инструмент автоматизации / Конфигурационное управление
Класс: Configuration Management, IT Automation, Orchestration Tool

Разработчик:
Michael DeHaan (основатель), Red Hat (с 2015 года)

Год выпуска:
2012 год

Лицензия:
GNU General Public License v3.0 (open source)

Сайт: https://www.ansible.com


2. Основные компоненты

Компонент Описание
Control Node Сервер или рабочая станция, с которой запускаются playbook'и
Managed Nodes Удалённые серверы, контейнеры, сетевые устройства и т.д., на которые Ansible применяет изменения
Inventory Файл или динамический источник данных, содержащий список узлов и групп
Playbook YAML-файл, описывающий последовательность задач (plays)
Modules Библиотека готовых модулей для выполнения операций (более 2000 официальных)
Tasks Отдельная задача в playbook
Roles Повторно используемые блоки настройки, структурированные по каталогам
Facts Информация об узле, собираемая автоматически
Ansible Vault Механизм шифрования секретов (пароли, токены, ключи)

3. Основные функции

Функция Описание
Автоматизация настройки серверов Настройка ОС, установка пакетов, конфигурация сервисов
Управление конфигурацией Приведение систем к нужному состоянию (idempotent подход)
Оркестрация Выполнение задач в определённом порядке на нескольких узлах
Деплой приложений Автоматическое развёртывание приложений
Поддержка облачных провайдеров AWS, Azure, GCP, OpenStack и другие
Многоплатформенность Поддерживает Linux, Windows, macOS, сетевое оборудование
Agentless архитектура Не требует установки клиентского ПО на удалённые узлы
Интеграция с CI/CD Легко внедряется в pipeline (Jenkins, GitLab CI и др.)

4. Пример использования

Пример Inventory:

[webservers]
web1.example.com
web2.example.com

[dbservers]
db01.example.com

Пример Playbook:

---
- name: Установить и настроить Nginx
  hosts: webservers
  become: yes
  tasks:
    - name: Установить Nginx
      apt:
        name: nginx
        state: present

    - name: Запустить и включить службу Nginx
      service:
        name: nginx
        state: started
        enabled: yes

5. Преимущества использования Ansible

Простота освоения – используется YAML, не требует программирования
Agentless архитектура – минимум накладных расходов
Большое количество модулей – более 2000 для разных задач и технологий
Idempotency – задачи можно выполнять многократно без побочных эффектов
Open Source – активное сообщество, регулярные обновления
Интеграция с cloud и network – поддержка большого числа провайдеров и устройств
Платформа Ansible Tower (AWX) – графический интерфейс и дополнительный функционал


6. Использование в проектах

Этап Возможности
Разработка Создание локальной среды через Vagrant + Ansible
CI/CD Интеграция в pipeline для автоматического тестирования и деплоя
Тестирование Настройка тестовых окружений
Деплой Полностью автоматизированный запуск приложений в production
Обслуживание Обновление систем, ротация логов, бэкапы и т.д.
Обучение Изучение DevOps-процессов и автоматизации ИТ-инфраструктуры

7. Альтернативы Ansible

Инструмент Особенности
Puppet Agent-based система управления конфигурацией с DSL
Chef Программируемый подход, Ruby-based DSL
SaltStack Быстрая параллельная обработка команд
Terraform Инфраструктура как код (IaC), но не специализирован под конфигурацию
CFEngine Одна из первых систем управления конфигурацией
Shell / PowerShell скрипты Простые, но трудно масштабируемые решения

8. Интеграции

Интеграция Описание
Jenkins / GitLab CI / GitHub Actions Интеграция в pipeline CI/CD
Docker / Kubernetes Настройка контейнерной среды и оркестраторов
AWS / GCP / Azure Управление ресурсами в облаке
Terraform Совместное использование для IaC + Config Management
Prometheus / Grafana Настройка мониторинга
Ansible Tower / AWX Веб-интерфейс, роли доступа, job scheduling
LDAP / Active Directory Интеграция с системами авторизации