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
				
			
		
			
				
	
	
		
			627 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			627 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # DevOpsLab - Универсальная система тестирования Ansible ролей
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru  
 | ||
| **Версия:** 2.0.0
 | ||
| 
 | ||
| ## 📋 Описание
 | ||
| 
 | ||
| DevOpsLab - это универсальная система для разработки, тестирования и развертывания Ansible ролей с использованием Docker, Molecule и preset конфигураций. Система поддерживает тестирование на различных ОС через Docker контейнеры.
 | ||
| 
 | ||
| ## ✨ Ключевые возможности
 | ||
| 
 | ||
| - **Тестирование ролей** через Molecule с Docker
 | ||
| - **Preset система** для быстрого выбора окружений тестирования
 | ||
| - **Мультиплатформенное тестирование** (Ubuntu, Debian, CentOS, AlmaLinux, RHEL и другие)
 | ||
| - **Автоматическая проверка** синтаксиса Ansible ролей
 | ||
| - **Управление секретами** через Ansible Vault
 | ||
| - **Готовые Docker образы** для разных ОС
 | ||
| 
 | ||
| ## 📁 Структура проекта
 | ||
| 
 | ||
| ```
 | ||
| DevOpsLab/
 | ||
| ├── molecule/                    # Конфигурация Molecule
 | ||
| │   ├── default/                 # Основная конфигурация
 | ||
| │   │   ├── create.yml           # Создание контейнеров
 | ||
| │   │   ├── converge.yml         # Запуск тестов
 | ||
| │   │   ├── destroy.yml          # Удаление контейнеров
 | ||
| │   │   ├── site.yml             # Основной playbook
 | ||
| │   │   ├── verify.yml           # Проверка конфигурации
 | ||
| │   │   └── molecule.yml         # Конфигурация Molecule
 | ||
| │   └── presets/                 # Preset конфигурации
 | ||
| │       ├── default.yml          # Стандартный preset
 | ||
| │       ├── minimal.yml          # Минимальный preset
 | ||
| │       ├── mytest.yml           # Кастомный preset
 | ||
| │       ├── presets.yml          # Основные preset'ы
 | ||
| │       └── examples/            # Примеры preset'ов
 | ||
| │           ├── all-images.yml   # Все образы (16 хостов)
 | ||
| │           ├── multi-os.yml     # Multi-OS тестирование
 | ||
| │           ├── performance.yml  # Тест производительности
 | ||
| │           ├── security.yml     # Тест безопасности
 | ||
| │           └── ...
 | ||
| ├── roles/                       # Ansible роли
 | ||
| │   ├── docker/                  # Роль установки Docker
 | ||
| │   ├── devops/                  # Роль DevOps инструментов
 | ||
| │   ├── ping/                    # Роль для ping проверок
 | ||
| │   └── deploy.yml               # Playbook для развертывания
 | ||
| ├── dockerfiles/                 # Docker образы
 | ||
| │   ├── ansible-controller/      # Ansible контроллер
 | ||
| │   ├── ubuntu20/                # Ubuntu 20.04
 | ||
| │   ├── ubuntu22/                # Ubuntu 22.04
 | ||
| │   ├── ubuntu24/                # Ubuntu 24.04
 | ||
| │   ├── debian9/                 # Debian 9
 | ||
| │   ├── debian10/                # Debian 10
 | ||
| │   ├── debian11/                # Debian 11
 | ||
| │   ├── debian12/                # Debian 12
 | ||
| │   ├── centos7/                 # CentOS 7
 | ||
| │   ├── centos8/                 # CentOS 8
 | ||
| │   ├── centos9/                 # CentOS 9
 | ||
| │   ├── alma/                    # AlmaLinux 8
 | ||
| │   ├── rocky/                   # Rocky Linux 8
 | ||
| │   ├── rhel/                    # RHEL 8
 | ||
| │   ├── alt9/               # ALT Linux P9
 | ||
| │   ├── astra-linux/             # Astra Linux 1.7
 | ||
| │   └── redos/                   # RED OS 9
 | ||
| ├── cicd/                        # CI/CD конфигурации
 | ||
| │   ├── azure-devops/            # Azure DevOps
 | ||
| │   ├── github/                  # GitHub Actions
 | ||
| │   ├── gitlab/                  # GitLab CI
 | ||
| │   └── jenkins/                 # Jenkins
 | ||
| ├── vault/                       # Зашифрованные секреты
 | ||
| ├── inventory/                   # Инвентори файлы
 | ||
| ├── scripts/                     # Вспомогательные скрипты
 | ||
| ├── docs/                        # Документация
 | ||
| ├── Makefile                     # Основные команды
 | ||
| └── requirements.yml             # Ansible коллекции
 | ||
| ```
 | ||
| 
 | ||
| ## 🚀 Быстрый старт
 | ||
| 
 | ||
| ### 1. Клонирование репозитория
 | ||
| 
 | ||
| ```bash
 | ||
| git clone <repository-url>
 | ||
| cd DevOpsLab
 | ||
| ```
 | ||
| 
 | ||
| ### 2. Тестирование ролей
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование с default preset (2 хоста)
 | ||
| make role test
 | ||
| 
 | ||
| # Тестирование с минимальным preset (1 хост)
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Тестирование с кастомным preset
 | ||
| make role test my-custom-preset
 | ||
| ```
 | ||
| 
 | ||
| ### 3. Проверка синтаксиса
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка всех ролей
 | ||
| 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
 | ||
| 
 | ||
| **Пример использования:**
 | ||
| ```yaml
 | ||
| - hosts: all
 | ||
|   roles:
 | ||
|     - role: docker
 | ||
|       vars:
 | ||
|         docker_users:
 | ||
|           - ansible
 | ||
|           - deploy
 | ||
| ```
 | ||
| 
 | ||
| **Подробная документация:** [roles/docker/README.md](roles/docker/README.md)
 | ||
| 
 | ||
| ### DevOps
 | ||
| 
 | ||
| Роль для установки и настройки инструментов DevOps.
 | ||
| 
 | ||
| **Подробная документация:** [roles/devops/README.md](roles/devops/README.md)
 | ||
| 
 | ||
| ### Ping
 | ||
| 
 | ||
| Роль для выполнения ping проверок подключения к сети.
 | ||
| 
 | ||
| **Пример использования:**
 | ||
| ```yaml
 | ||
| - hosts: all
 | ||
|   roles:
 | ||
|     - role: ping
 | ||
|       vars:
 | ||
|         ping_host: google.com
 | ||
|         ping_count: 10
 | ||
| ```
 | ||
| 
 | ||
| **Подробная документация:** [roles/ping/README.md](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`:
 | ||
| 
 | ||
| ```yaml
 | ||
| ---
 | ||
| #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:
 | ||
| 
 | ||
| ```bash
 | ||
| make role test my-preset
 | ||
| ```
 | ||
| 
 | ||
| ## 🔐 Управление секретами
 | ||
| 
 | ||
| ### Ansible Vault
 | ||
| 
 | ||
| ```bash
 | ||
| # Создание секретного файла
 | ||
| make vault create
 | ||
| 
 | ||
| # Редактирование секретов
 | ||
| make vault edit
 | ||
| 
 | ||
| # Просмотр секретов
 | ||
| make vault show
 | ||
| 
 | ||
| # Шифрование файла
 | ||
| make vault encrypt
 | ||
| 
 | ||
| # Расшифровка файла
 | ||
| make vault decrypt
 | ||
| ```
 | ||
| 
 | ||
| ## 🚀 Развертывание
 | ||
| 
 | ||
| ### Тестирование (Docker контейнеры)
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование с разными preset'ами
 | ||
| make role test                    # default preset
 | ||
| make role test minimal           # minimal preset
 | ||
| ```
 | ||
| 
 | ||
| ### Развертывание на реальные серверы
 | ||
| 
 | ||
| ```bash
 | ||
| # Развертывание на продакшн
 | ||
| make role deploy
 | ||
| ```
 | ||
| 
 | ||
| **Инвентори для продакшн** находится в файле `inventory/hosts.ini`:
 | ||
| 
 | ||
| ```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
 | ||
| ```
 | ||
| 
 | ||
| ## 🔧 Основные команды
 | ||
| 
 | ||
| ### Управление ролями
 | ||
| 
 | ||
| ```bash
 | ||
| # Список всех ролей
 | ||
| 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'ами
 | ||
| 
 | ||
| ```bash
 | ||
| # Просмотр доступных preset'ов
 | ||
| make presets list                 # показать все preset'ы
 | ||
| 
 | ||
| # Информация о preset'е
 | ||
| make presets info PRESET=etcd-patroni    # подробная информация
 | ||
| 
 | ||
| # Тестирование с preset'ом
 | ||
| make presets test PRESET=minimal         # запустить тест с preset'ом
 | ||
| ```
 | ||
| 
 | ||
| ### Управление секретами (Vault)
 | ||
| 
 | ||
| ```bash
 | ||
| # Инициализация 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
 | ||
| 
 | ||
| ```bash
 | ||
| # Отправка изменений
 | ||
| make git push                     # git add . && git commit && git push
 | ||
| 
 | ||
| # Получение изменений
 | ||
| make git pull                     # git pull origin main
 | ||
| 
 | ||
| # Создание ветки
 | ||
| make git new                      # создать новую ветку
 | ||
| ```
 | ||
| 
 | ||
| ### Управление Docker образами
 | ||
| 
 | ||
| ```bash
 | ||
| # Подготовка к работе
 | ||
| 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
 | ||
| 
 | ||
| ```bash
 | ||
| # Сборка и запуск
 | ||
| make controller build             # собрать ansible-controller (multi-arch)
 | ||
| make controller rebuild           # пересобрать с исправлениями
 | ||
| make controller run               # запустить ansible-controller
 | ||
| make controller stop              # остановить ansible-controller
 | ||
| ```
 | ||
| 
 | ||
| ### Собственные образы для тестирования
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование с собственными образами
 | ||
| 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                 # собрать все образы для тестирования
 | ||
| ```
 | ||
| 
 | ||
| ### Автоматизация
 | ||
| 
 | ||
| ```bash
 | ||
| # Обновление playbook'ов
 | ||
| make update-playbooks             # обновление при добавлении ролей
 | ||
| 
 | ||
| # Генерация документации
 | ||
| make generate-docs                # генерация документации для ролей
 | ||
| 
 | ||
| # Настройка CI/CD
 | ||
| make setup-cicd                   # настройка CI/CD для всех платформ
 | ||
| ```
 | ||
| 
 | ||
| ### Очистка
 | ||
| 
 | ||
| ```bash
 | ||
| # Очистка контейнеров Molecule
 | ||
| make clean-containers             # удалить контейнеры Molecule
 | ||
| 
 | ||
| # Очистка Docker
 | ||
| make docker clean                 # удалить образы и кеш
 | ||
| make docker clean-builder         # очистить builder
 | ||
| make docker purge                 # ПОЛНАЯ очистка Docker
 | ||
| ```
 | ||
| 
 | ||
| ### Справка
 | ||
| 
 | ||
| ```bash
 | ||
| # Основная справка
 | ||
| make help                         # показать общую справку
 | ||
| 
 | ||
| # Детальная справка по командам
 | ||
| make role                         # справка по работе с ролями
 | ||
| make presets                      # справка по preset'ам
 | ||
| make vault                        # справка по vault
 | ||
| make docker                       # справка по docker
 | ||
| make controller                   # справка по controller
 | ||
| make custom-images                # справка по собственным образам
 | ||
| ```
 | ||
| 
 | ||
| ## 📖 Документация
 | ||
| 
 | ||
| ### Основная документация
 | ||
| 
 | ||
| - **[docs/getting-started.md](docs/getting-started.md)** - Быстрый старт
 | ||
| - **[docs/molecule-guide.md](docs/molecule-guide.md)** - Руководство по Molecule
 | ||
| - **[docs/creating-roles.md](docs/creating-roles.md)** - Создание ролей
 | ||
| - **[docs/cicd-setup.md](docs/cicd-setup.md)** - Настройка CI/CD
 | ||
| 
 | ||
| ### Presets и тестирование
 | ||
| 
 | ||
| - **[docs/all-images-preset.md](docs/all-images-preset.md)** - Пресет all-images для тестирования всех образов
 | ||
| - **[docs/presets-by-os.md](docs/presets-by-os.md)** - Presets по операционным системам
 | ||
| - **[docs/testing-vs-deployment.md](docs/testing-vs-deployment.md)** - Различия между тестированием и развертыванием
 | ||
| - **[docs/universal-testing.md](docs/universal-testing.md)** - Универсальное тестирование
 | ||
| 
 | ||
| ### Развертывание и конфигурация
 | ||
| 
 | ||
| - **[docs/site-yml-guide.md](docs/site-yml-guide.md)** - Руководство по файлу site.yml
 | ||
| - **[docs/deploy-yml-customization.md](docs/deploy-yml-customization.md)** - Полное руководство по кастомизации deploy.yml
 | ||
| 
 | ||
| ### Безопасность и качество
 | ||
| 
 | ||
| - **[docs/vault-guide.md](docs/vault-guide.md)** - Работа с Ansible Vault
 | ||
| - **[docs/linting-guide.md](docs/linting-guide.md)** - Руководство по линтингу ролей
 | ||
| 
 | ||
| ### Мониторинг и диагностика
 | ||
| 
 | ||
| - **[docs/monitoring.md](docs/monitoring.md)** - Мониторинг, диагностика и troubleshooting
 | ||
| - **[docs/buildx-fixes.md](docs/buildx-fixes.md)** - Исправление проблем с Docker Buildx
 | ||
| 
 | ||
| ### Платформы и примеры
 | ||
| 
 | ||
| - **[docs/platform-support.md](docs/platform-support.md)** - Поддержка платформ
 | ||
| - **[docs/examples.md](docs/examples.md)** - Примеры использования
 | ||
| 
 | ||
| ### Документация по ролям
 | ||
| 
 | ||
| - **[roles/docker/README.md](roles/docker/README.md)** - Документация роли Docker
 | ||
| - **[roles/devops/README.md](roles/devops/README.md)** - Документация роли DevOps
 | ||
| - **[roles/ping/README.md](roles/ping/README.md)** - Документация роли Ping
 | ||
| 
 | ||
| ### Docker образы
 | ||
| 
 | ||
| - **[docs/dockerfiles.md](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 для корректной работы служб.
 | ||
| 
 | ||
| ## 🛠️ Разработка новых ролей
 | ||
| 
 | ||
| ### Создание структуры роли
 | ||
| 
 | ||
| ```bash
 | ||
| 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:**
 | ||
| ```yaml
 | ||
| ---
 | ||
| - name: Пример задачи
 | ||
|   debug:
 | ||
|     msg: "Роль my-role выполнена"
 | ||
| ```
 | ||
| 
 | ||
| **defaults/main.yml:**
 | ||
| ```yaml
 | ||
| ---
 | ||
| # Переменные по умолчанию
 | ||
| my_role_enabled: true
 | ||
| my_role_version: "1.0.0"
 | ||
| ```
 | ||
| 
 | ||
| **README.md:**
 | ||
| ```markdown
 | ||
| # Роль My-Role
 | ||
| 
 | ||
| Описание роли...
 | ||
| ```
 | ||
| 
 | ||
| ### Тестирование новой роли
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка синтаксиса
 | ||
| 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](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 |