- Добавлены описания Ubuntu 20.04, 22.04, 24.04 - Добавлены описания Debian 9, 10, 11, 12 - Добавлены описания CentOS 7, 8, 9 - Упрощена структура документации - Все версии ОС теперь имеют полные описания Автор: Сергей Антропов Сайт: https://devops.org.ru
AnsibleLab - Универсальная система тестирования Ansible ролей
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 2.0.0
📋 Описание
AnsibleLab - это универсальная система для разработки, тестирования и развертывания Ansible ролей с использованием Docker, Molecule и preset конфигураций. Система поддерживает тестирование на различных ОС через Docker контейнеры.
✨ Ключевые возможности
- Тестирование ролей через Molecule с Docker
- Preset система для быстрого выбора окружений тестирования
- Мультиплатформенное тестирование (Ubuntu, Debian, CentOS, AlmaLinux, RHEL и другие)
- Автоматическая проверка синтаксиса Ansible ролей
- Управление секретами через Ansible Vault
- Готовые Docker образы для разных ОС
📁 Структура проекта
AnsibleLab/
├── molecule/                    # Конфигурация Molecule
│   ├── default/                 # Основная конфигурация
│   │   ├── create.yml           # Создание контейнеров
│   │   ├── converge.yml         # Запуск тестов
│   │   ├── destroy.yml          # Удаление контейнеров
│   │   ├── site.yml             # Основной playbook
│   │   └── molecule.yml         # Конфигурация Molecule
│   └── presets/                 # Preset конфигурации
│       ├── default.yml          # Стандартный preset
│       ├── minimal.yml          # Минимальный preset
│       └── examples/            # Примеры preset'ов
├── roles/                       # Ansible роли
│   ├── docker/                  # Роль установки Docker
│   ├── ping/                    # Роль для ping проверок
│   └── deploy.yml               # Playbook для развертывания
├── dockerfiles/                 # Docker образы
│   └── ansible-controller/      # Ansible контроллер
├── cicd/                        # CI/CD конфигурации
├── vault/                       # Зашифрованные секреты
├── inventory/                   # Инвентори файлы
├── scripts/                     # Вспомогательные скрипты
├── docs/                        # Документация
├── Makefile                     # Основные команды
└── requirements.yml             # Ansible коллекции
🚀 Быстрый старт
1. Клонирование репозитория
git clone <repository-url>
cd AnsibleLab
2. Тестирование ролей
# Тестирование с default preset (2 хоста)
make role test
# Тестирование с минимальным preset (1 хост)
make role test minimal
# Тестирование с кастомным preset
make role test my-custom-preset
3. Проверка синтаксиса
# Проверка всех ролей
make role lint
# Проверка конкретной роли
make role lint docker
make role lint ping
📚 Доступные роли
Docker
Универсальная роль для установки Docker и Docker Compose на различных Linux-дистрибутивах.
Поддерживаемые ОС:
- Debian 9/10/11/12
- Ubuntu 20.04/22.04/24.04
- CentOS 7/8/9
- AlmaLinux 8/9
- Rocky Linux 8/9
- RHEL 8/9
Пример использования:
- hosts: all
  roles:
    - role: docker
      vars:
        docker_users:
          - ansible
          - deploy
Подробная документация: roles/docker/README.md
DevOps
Роль для установки и настройки инструментов DevOps.
Подробная документация: roles/devops/README.md
Ping
Роль для выполнения ping проверок подключения к сети.
Пример использования:
- hosts: all
  roles:
    - role: ping
      vars:
        ping_host: google.com
        ping_count: 10
Подробная документация: roles/ping/README.md
🧪 Preset система
Preset система позволяет быстро выбрать окружение для тестирования.
Доступные preset'ы
Базовые
- default- Стандартный preset (2 хоста: Ubuntu + Debian)
- minimal- Минимальный preset (1 хост: Debian)
- test- Базовый тест (2 хоста)
- stable- Стабильные ОС (4 хоста)
- standart- Стандартный набор (4 хоста)
- mytest- Кастомный preset (3 хоста)
По ОС
- Ubuntu: ubuntu20,ubuntu22,ubuntu24,ubuntu-all(все версии)
- Debian: debian9,debian10,debian11,debian12,debian-all(все версии)
- CentOS: centos7,centos8,centos9,centos-all(все версии)
Специализированные
- all-images- Все образы (16 хостов) - полное покрытие всех ОС
- multi-os- Multi-OS тестирование (8 хостов разных ОС)
- docker-full- Docker тестирование (4 хоста)
- docker-test- Базовое Docker тестирование (2 хоста)
- etcd-patroni- ETCD + Patroni кластер (4 хоста)
- performance- Тест производительности (8 хостов)
- security- Тест безопасности (6 хостов)
Создание своего preset
Создайте файл molecule/presets/my-preset.yml:
---
#description: Мой кастомный preset
docker_network: labnet
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
images:
  ubuntu22: "inecs/ansible-lab:ubuntu22-latest"
  centos9: "inecs/ansible-lab:centos9-latest"
systemd_defaults:
  privileged: true
  command: "/sbin/init"
  volumes:
    - "/sys/fs/cgroup:/sys/fs/cgroup:rw"
  tmpfs: ["/run", "/run/lock"]
  capabilities: ["SYS_ADMIN"]
hosts:
  - name: web1
    family: ubuntu22
    groups: [web, test]
  - name: db1
    family: centos9
    groups: [database, test]
Используйте preset:
make role test my-preset
🔐 Управление секретами
Ansible Vault
# Создание секретного файла
make vault create
# Редактирование секретов
make vault edit
# Просмотр секретов
make vault show
# Шифрование файла
make vault encrypt
# Расшифровка файла
make vault decrypt
🚀 Развертывание
Тестирование (Docker контейнеры)
# Тестирование с разными preset'ами
make role test                    # default preset
make role test minimal           # minimal preset
Развертывание на реальные серверы
# Развертывание на продакшн
make role deploy
Инвентори для продакшн находится в файле inventory/hosts.ini:
# inventory/hosts.ini
[web_servers]
web1.example.com ansible_host=192.168.1.10
[db_servers]
db1.example.com ansible_host=192.168.1.20
[all:vars]
ansible_user=devops
ansible_ssh_private_key_file=~/.ssh/id_rsa
🔧 Основные команды
Управление ролями
# Список всех ролей
make role list                    # показать все роли
ls -1 roles/                      # альтернативный способ
# Создание новой роли
make role create                  # интерактивное создание роли
# Удаление роли
make role delete                  # интерактивное удаление роли
# Проверка синтаксиса (Linting)
make role lint                    # проверить все роли
make role lint docker             # проверить конкретную роль
make role lint ping               # пример проверки одной роли
# Тестирование ролей
make role test                    # тест с default preset
make role test minimal           # тест с minimal preset
make role test all-images        # тест со всеми образами
make role test etcd-patroni      # тест с кастомным preset
# Развертывание на продакшн
make role deploy                  # развернуть роли на реальные серверы
Управление Preset'ами
# Просмотр доступных preset'ов
make presets list                 # показать все preset'ы
# Информация о preset'е
make presets info PRESET=etcd-patroni    # подробная информация
# Тестирование с preset'ом
make presets test PRESET=minimal         # запустить тест с preset'ом
Управление секретами (Vault)
# Инициализация vault
make vault init                   # создать vault/.vault с паролем
# Создание секретов
make vault create                 # создать новый файл секретов
# Редактирование
make vault edit                   # редактировать существующие секреты
# Просмотр
make vault show                   # показать содержимое секретов
# Удаление
make vault delete                 # удалить файл секретов
# Шифрование/расшифровка
make vault encrypt                # зашифровать файл
make vault decrypt                # расшифровать файл
make vault rekey                  # сменить пароль шифрования
# Проверка и аудит
make vault check                  # проверить vault файлы
make vault scan                   # поиск потенциальных секретов
Управление Git
# Отправка изменений
make git push                     # git add . && git commit && git push
# Получение изменений
make git pull                     # git pull origin main
# Создание ветки
make git new                      # создать новую ветку
Управление Docker образами
# Подготовка к работе
make docker prepare               # показать registry, version, список образов
# Сборка образов
make docker build                 # собрать все образы (multi-arch)
make docker build-image IMAGE=centos7    # собрать отдельный образ
make docker rebuild               # полная пересборка с очисткой кеша
# Работа с Docker Hub
make docker push                  # отправить образы в Docker Hub
make docker pull                  # загрузить образы из Docker Hub
# Очистка
make docker clean                 # удалить локальные образы и кеш
make docker clean-builder         # очистка multi-arch builder
make docker purge                 # ПОЛНАЯ очистка Docker (осторожно!)
# Информация
make docker info                  # информация о собранных образах
make docker update                # обновить все образы (pull + build + push)
# Управление builder'ом
make docker setup-builder         # настройка multi-arch builder
make docker diagnose              # диагностика buildx проблем
make docker reset-builder         # сброс buildx builder
Управление Ansible Controller
# Сборка и запуск
make controller build             # собрать ansible-controller (multi-arch)
make controller rebuild           # пересобрать с исправлениями
make controller run               # запустить ansible-controller
make controller stop              # остановить ansible-controller
Собственные образы для тестирования
# Тестирование с собственными образами
make custom-images test minimal          # минимальный тест (4 хоста)
make custom-images test full             # полный тест (все образы)
make custom-images test performance      # тест производительности (8 хостов)
# Проверка наличия образов
make custom-images check                 # проверить наличие собственных образов
# Сборка образов
make custom-images build                 # собрать все образы для тестирования
Автоматизация
# Обновление playbook'ов
make update-playbooks             # обновление при добавлении ролей
# Генерация документации
make generate-docs                # генерация документации для ролей
# Настройка CI/CD
make setup-cicd                   # настройка CI/CD для всех платформ
Очистка
# Очистка контейнеров Molecule
make clean-containers             # удалить контейнеры Molecule
# Очистка Docker
make docker clean                 # удалить образы и кеш
make docker clean-builder         # очистить builder
make docker purge                 # ПОЛНАЯ очистка Docker
Справка
# Основная справка
make help                         # показать общую справку
# Детальная справка по командам
make role                         # справка по работе с ролями
make presets                      # справка по preset'ам
make vault                        # справка по vault
make docker                       # справка по docker
make controller                   # справка по controller
make custom-images                # справка по собственным образам
📖 Документация
Основная документация
- docs/getting-started.md - Быстрый старт
- docs/molecule-guide.md - Руководство по Molecule
- docs/creating-roles.md - Создание ролей
- docs/cicd-setup.md - Настройка CI/CD
Presets и тестирование
- docs/all-images-preset.md - Пресет all-images для тестирования всех образов
- docs/presets-by-os.md - Presets по операционным системам
- docs/testing-vs-deployment.md - Различия между тестированием и развертыванием
- docs/universal-testing.md - Универсальное тестирование
Развертывание и конфигурация
- docs/site-yml-guide.md - Руководство по файлу site.yml
- docs/deploy-yml-customization.md - Полное руководство по кастомизации deploy.yml
Безопасность и качество
- docs/vault-guide.md - Работа с Ansible Vault
- docs/linting-guide.md - Руководство по линтингу ролей
Мониторинг и диагностика
- docs/monitoring.md - Мониторинг, диагностика и troubleshooting
- docs/buildx-fixes.md - Исправление проблем с Docker Buildx
Платформы и примеры
- docs/platform-support.md - Поддержка платформ
- docs/examples.md - Примеры использования
Документация по ролям
- roles/docker/README.md - Документация роли Docker
- roles/devops/README.md - Документация роли DevOps
- roles/ping/README.md - Документация роли Ping
Docker образы
- docs/dockerfiles.md - Полная документация по Docker образам
🐳 Docker образы
Проект использует готовые Docker образы для различных ОС:
- Ubuntu 20.04, 22.04, 24.04
- Debian 9, 10, 11, 12
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- RHEL 8, 9
Все образы с поддержкой systemd для корректной работы служб.
🛠️ Разработка новых ролей
Создание структуры роли
mkdir -p roles/my-role/{tasks,handlers,templates,files,vars,defaults,meta}
touch roles/my-role/{tasks,handlers,meta}/main.yml
touch roles/my-role/defaults/main.yml
Основные файлы
tasks/main.yml:
---
- name: Пример задачи
  debug:
    msg: "Роль my-role выполнена"
defaults/main.yml:
---
# Переменные по умолчанию
my_role_enabled: true
my_role_version: "1.0.0"
README.md:
# Роль My-Role
Описание роли...
Тестирование новой роли
# Проверка синтаксиса
make role lint my-role
# Тестирование
make role test
🏗️ CI/CD
Проект поддерживает интеграцию с различными CI/CD системами:
- GitHub Actions - готовые workflow'ы
- Azure DevOps - pipeline конфигурации
- Jenkins - pipeline скрипты
- GitLab CI - интеграция
Подробнее в docs/cicd-setup.md
📊 Требования
- Docker - для контейнеризации
- Docker Compose - для оркестрации
- Ansible >= 2.9
- Molecule >= 3.0
- Python >= 3.6
🎯 Поддерживаемые ОС
Для тестирования (Docker)
- Ubuntu 20.04/22.04/24.04
- Debian 9/10/11/12
- CentOS 7/8/9
- AlmaLinux 8/9
- Rocky Linux 8/9
- RHEL 8/9
Для развертывания
- Любые Linux системы с SSH доступом
🤝 Вклад в проект
- Fork репозитория
- Создайте feature branch (git checkout -b feature/amazing-feature)
- Commit изменения (git commit -m 'Add amazing feature')
- Push в branch (git push origin feature/amazing-feature)
- Создайте Pull Request
📄 Лицензия
MIT License
📞 Поддержка
При возникновении проблем:
- Проверьте наличие Docker
- Убедитесь, что все preset файлы существуют
- Используйте make role lintдля проверки синтаксиса
- Проверьте логи тестирования
🎉 Основные достижения
- ✅ Универсальная preset система
- ✅ Мультиплатформенное тестирование
- ✅ Автоматическая проверка синтаксиса
- ✅ Управление секретами через Ansible Vault
- ✅ Готовые Docker образы для разных ОС
- ✅ CI/CD интеграция
Автор: Сергей Антропов
Сайт: https://devops.org.ru