Files
DevOpsLab/README.md
Сергей Антропов b41c110c16
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
feat: добавлена универсальная роль docker и обновлена документация
- Создана универсальная роль docker для установки Docker и Docker Compose
- Поддержка Debian, Ubuntu, CentOS, AlmaLinux, Rocky, RHEL
- Установка через официальный репозиторий или get.docker.com
- Полностью переписана документация README.md с актуальной информацией
- Добавлен preset mytest для тестирования
- Обновлен roles/deploy.yml с актуальными ролями

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-26 00:58:00 +03:00

12 KiB
Raw Blame History

AnsibleTemplate - Универсальная система тестирования Ansible ролей

Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 2.0.0

📋 Описание

AnsibleTemplate - это универсальная система для разработки, тестирования и развертывания Ansible ролей с использованием Docker, Molecule и preset конфигураций. Система поддерживает тестирование на различных ОС через Docker контейнеры.

Ключевые возможности

  • Тестирование ролей через Molecule с Docker
  • Preset система для быстрого выбора окружений тестирования
  • Мультиплатформенное тестирование (Ubuntu, Debian, CentOS, AlmaLinux, RHEL и другие)
  • Автоматическая проверка синтаксиса Ansible ролей
  • Управление секретами через Ansible Vault
  • Готовые Docker образы для разных ОС

📁 Структура проекта

AnsibleTemplate/
├── 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 AnsibleTemplate

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

Ping

Роль для выполнения ping проверок подключения к сети.

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

- hosts: all
  roles:
    - role: ping
      vars:
        ping_host: google.com
        ping_count: 10

Подробная документация: roles/ping/README.md

🧪 Preset система

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

Доступные preset'ы

Preset Описание Хосты
default Стандартный preset 2 хоста (Ubuntu + CentOS)
minimal Минимальный preset 1 хост (Debian)
mytest Кастомный preset 3 хоста

Создание своего 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

🔧 Основные команды

Управление ролями

# Просмотр всех ролей
ls -1 roles/

# Проверка синтаксиса
make role lint                    # все роли
make role lint docker             # конкретная роль

# Тестирование
make role test                    # default preset
make role test minimal           # minimal preset

Управление секретами

# Создание секретов
make vault create

# Редактирование
make vault edit

# Просмотр
make vault show

Развертывание

# Развертывание на продакшн
make role deploy

📖 Документация

Основная документация

Документация по ролям

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 доступом

🤝 Вклад в проект

  1. Fork репозитория
  2. Создайте feature branch (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в branch (git push origin feature/amazing-feature)
  5. Создайте Pull Request

📄 Лицензия

MIT License

📞 Поддержка

При возникновении проблем:

  1. Проверьте наличие Docker
  2. Убедитесь, что все preset файлы существуют
  3. Используйте make role lint для проверки синтаксиса
  4. Проверьте логи тестирования

🎉 Основные достижения

  • Универсальная preset система
  • Мультиплатформенное тестирование
  • Автоматическая проверка синтаксиса
  • Управление секретами через Ansible Vault
  • Готовые Docker образы для разных ОС
  • CI/CD интеграция

Автор: Сергей Антропов
Сайт: https://devops.org.ru