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

406 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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