Что требуется для работы Ansible?

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

Ответ

Для работы Ansible требуется следующая минимальная инфраструктура и настройка:

1. Управляющая машина (Control Node):

  • Операционная система: Любой Linux-дистрибутив, macOS, или Windows Subsystem for Linux (WSL2). На Windows нативно Ansible не работает.
  • Python: Обязательно. Требуется Python версии 3.8 или новее (рекомендуется). Поддерживается и Python 2.7, но он устарел.
  • Установленный Ansible: Устанавливается через пакетный менеджер или pip.
    # Для Ubuntu/Debian
    sudo apt update && sudo apt install -y ansible
    # Через pip (для получения последней версии)
    python3 -m pip install --user ansible

2. Управляемые узлы (Managed Nodes): Главное преимущество Ansible — отсутствие агентов. Требования к узлам:

  • Доступ по SSH (для Linux/Unix) или WinRM (для Windows).
  • Python интерпретатор на целевом узле. Для Linux он почти всегда предустановлен.
    • Ansible автоматически копирует небольшой модуль на узел по SSH, который требует Python для выполнения.
    • Если Python отсутствует, можно использовать «raw» модуль для его первоначальной установки.

3. Инвентарь (Inventory): Файл (обычно inventory.ini или hosts), в котором перечислены все управляемые хосты, сгруппированные по необходимости.

# Пример простого инвентаря
[web_servers]
web01.example.com ansible_user=deploy
web02.example.com

[database_servers]
db01.example.com

# Группа всех серверов
[all_servers:children]
web_servers
database_servers

# Переменные можно задавать на уровне группы или хоста
[web_servers:vars]
http_port=80

4. Файлы конфигурации и плейбуков:

  • Плейбук (Playbook): YAML-файл с описанием желаемого состояния узлов.
  • ansible.cfg: Конфигурационный файл для настройки поведения Ansible (путь к инвентарю, пользователь SSH, etc.).

Пример проверки связи (ping) со всеми хостами из инвентаря:

# Команда выполняется с управляющей машины
ansible all -i inventory.ini -m ping

Если все настроено верно, вы получите ответ pong от каждого хоста, что подтвердит работоспособность.