Добавить в корзинуПозвонить
Найти в Дзене
SunN1nja

Полноценная лаборатория Ansible своими руками: от Playbook до Vault и собственных модулей

Если вы изучаете DevOps, автоматизацию инфраструктуры или просто хотите разобраться в Ansible, рано или поздно сталкиваетесь с одной проблемой. Большинство руководств показывают отдельные команды и небольшие примеры. Но реальная работа выглядит совсем иначе. На практике приходится одновременно использовать: Именно поэтому появился интересный проект, который позволяет собрать полноценную лабораторию Ansible прямо на локальном компьютере или в Google Colab. Авторы руководства решили показать полный жизненный цикл инфраструктурной автоматизации. В проекте используются: По сути, это миниатюрная версия того, что используется в реальных корпоративных проектах. Лаборатория начинается с установки ansible-core и создания рабочей среды. После установки создаётся основной конфигурационный файл: Для лаборатории используются локальные узлы. Таким образом можно безопасно изучать Ansible без аренды VPS и облачных сервисов. Ansible позволяет хранить переменные на разных уровнях. Пример общих параметро
Оглавление
Полноценная лаборатория Ansible своими руками: от Playbook до Vault и собственных модулей
Полноценная лаборатория Ansible своими руками: от Playbook до Vault и собственных модулей

Если вы изучаете DevOps, автоматизацию инфраструктуры или просто хотите разобраться в Ansible, рано или поздно сталкиваетесь с одной проблемой.

Большинство руководств показывают отдельные команды и небольшие примеры.

Но реальная работа выглядит совсем иначе.

На практике приходится одновременно использовать:

  • Playbook;
  • Inventory;
  • Roles;
  • Templates;
  • Vault;
  • Dynamic Inventory;
  • пользовательские модули;
  • обработку ошибок;
  • идемпотентность.

Именно поэтому появился интересный проект, который позволяет собрать полноценную лабораторию Ansible прямо на локальном компьютере или в Google Colab.

Что входит в лабораторию

Авторы руководства решили показать полный жизненный цикл инфраструктурной автоматизации.

В проекте используются:

  • ansible-core;
  • статический inventory;
  • динамический inventory;
  • роли;
  • шаблоны Jinja2;
  • пользовательские фильтры;
  • собственные Python-модули;
  • Ansible Vault;
  • dry-run проверки;
  • теги;
  • обработка ошибок.

По сути, это миниатюрная версия того, что используется в реальных корпоративных проектах.

Шаг 1. Установка Ansible

Лаборатория начинается с установки ansible-core и создания рабочей среды.

Установка Ansible
Установка Ansible

После установки создаётся основной конфигурационный файл:

Конфигурационный файл
Конфигурационный файл

Создание статического Inventory

Для лаборатории используются локальные узлы.

Локальные узлы
Локальные узлы

Таким образом можно безопасно изучать Ansible без аренды VPS и облачных сервисов.

Работа с переменными

Ansible позволяет хранить переменные на разных уровнях.

Пример общих параметров:

Пример параметров
Пример параметров

Отдельно можно задавать параметры конкретных серверов:

Параметры серверов
Параметры серверов

Это позволяет централизованно управлять конфигурацией большого количества машин.

Пользовательские фильтры Jinja2

Одной из интересных возможностей Ansible являются собственные фильтры.

В лаборатории создаются два фильтра:

Создание фильтров
Создание фильтров

Они позволяют:

  • преобразовывать строки в URL-friendly формат;
  • красиво отображать размеры файлов.

Собственный модуль Ansible

Авторы также показывают создание собственного модуля.

Создание модуля
Создание модуля

Модуль формирует отчёт о системе:

  • версия ОС;
  • версия Python;
  • количество ядер процессора;
  • дополнительные параметры.

Создание Role

Для демонстрации используется роль веб-сервера.

Структура выглядит так:

roles/
└── webserver/
├── defaults/
├── handlers/
├── tasks/
├── templates/
└── vars/

Подобная структура считается стандартом для крупных Ansible-проектов.

Шаблоны Jinja2

HTML-файл генерируется автоматически:

HTML-файл генерируется автоматически
HTML-файл генерируется автоматически

Это позволяет создавать конфигурационные файлы и веб-страницы на основе переменных.

Dynamic Inventory

Вместо ручного описания серверов можно генерировать список динамически.

Пример:

Вместо ручного описания серверов можно генерировать список динамически.
Вместо ручного описания серверов можно генерировать список динамически.

Такой подход активно используется в AWS, Azure и Google Cloud.

Полноценный Playbook

Основной Playbook объединяет все возможности проекта:

  • переменные;
  • циклы;
  • условия;
  • пользовательские фильтры;
  • пользовательские модули;
  • роли;
  • обработку ошибок.

Пример цикла:

-11

Пример условия:

Пример условия
Пример условия

Обработка ошибок

Интересная возможность Ansible — блоки rescue и always.

Блоки rescue и always
Блоки rescue и always

Это аналог конструкции try/catch в языках программирования.

Работа с секретами через Vault

Для хранения паролей используется Ansible Vault.

Создание зашифрованного секрета:

Создание зашифрованного секрета
Создание зашифрованного секрета

После этого секрет автоматически расшифровывается при выполнении Playbook.

Проверка идемпотентности

Одна из главных особенностей Ansible — возможность повторного запуска без лишних изменений.

Проверка выполняется так:

ansible-playbook playbook.yml

Повторный запуск должен показать:

changed=0

Это означает, что инфраструктура уже приведена к нужному состоянию.

Почему эта лаборатория полезна

Большинство новичков изучают Ansible по отдельным примерам.

Но в реальной работе всё используется одновременно.

В этом проекте собраны практически все важные инструменты:

  • Inventory;
  • Playbook;
  • Roles;
  • Templates;
  • Vault;
  • Dynamic Inventory;
  • собственные модули;
  • обработка ошибок;
  • идемпотентность.

По сути, это готовый учебный стенд, который позволяет понять, как выглядит настоящая инфраструктурная автоматизация.

Если вы хотите перейти от простых команд к реальным DevOps-проектам, такой подход даёт гораздо больше пользы, чем десятки разрозненных туториалов.