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
- Создана универсальная роль docker для установки Docker и Docker Compose - Поддержка Debian, Ubuntu, CentOS, AlmaLinux, Rocky, RHEL - Установка через официальный репозиторий или get.docker.com - Полностью переписана документация README.md с актуальной информацией - Добавлен preset mytest для тестирования - Обновлен roles/deploy.yml с актуальными ролями Автор: Сергей Антропов Сайт: https://devops.org.ru
406 lines
12 KiB
Markdown
406 lines
12 KiB
Markdown
# 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. Клонирование репозитория
|
||
|
||
```bash
|
||
git clone <repository-url>
|
||
cd AnsibleTemplate
|
||
```
|
||
|
||
### 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)
|
||
|
||
### 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'ы
|
||
|
||
| Preset | Описание | Хосты |
|
||
|--------|----------|-------|
|
||
| `default` | Стандартный preset | 2 хоста (Ubuntu + CentOS) |
|
||
| `minimal` | Минимальный preset | 1 хост (Debian) |
|
||
| `mytest` | Кастомный preset | 3 хоста |
|
||
|
||
### Создание своего 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
|
||
# Просмотр всех ролей
|
||
ls -1 roles/
|
||
|
||
# Проверка синтаксиса
|
||
make role lint # все роли
|
||
make role lint docker # конкретная роль
|
||
|
||
# Тестирование
|
||
make role test # default preset
|
||
make role test minimal # minimal preset
|
||
```
|
||
|
||
### Управление секретами
|
||
|
||
```bash
|
||
# Создание секретов
|
||
make vault create
|
||
|
||
# Редактирование
|
||
make vault edit
|
||
|
||
# Просмотр
|
||
make vault show
|
||
```
|
||
|
||
### Развертывание
|
||
|
||
```bash
|
||
# Развертывание на продакшн
|
||
make role deploy
|
||
```
|
||
|
||
## 📖 Документация
|
||
|
||
### Основная документация
|
||
|
||
- **[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
|
||
|
||
### Документация по ролям
|
||
|
||
- **[roles/docker/README.md](roles/docker/README.md)** - Документация роли Docker
|
||
- **[roles/ping/README.md](roles/ping/README.md)** - Документация роли Ping
|
||
|
||
### Docker образы
|
||
|
||
- **[dockerfiles/README.md](dockerfiles/README.md)** - Информация об образах
|
||
|
||
## 🐳 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 |