feat: Добавлен пресет all-images и установка sudo во все Dockerfile
- Создан пресет all-images для тестирования всех 9 образов - Добавлен sudo во все Dockerfile образы - Настроены sudoers для root и пользователей - Упрощен site.yml (убрана установка sudo) - Добавлена документация для пресета all-images - Обновлен Makefile с поддержкой нового пресета - Исправлена проблема с Parsec в Astra Linux - Улучшена система очистки контейнеров Пресет all-images включает: - Debian-based: Ubuntu, Debian, Alt Linux, Astra Linux - RHEL-based: CentOS, RHEL, AlmaLinux, Rocky Linux, RedOS - Уникальные порты 8080-8088 - Переменные окружения TEST_OS и TEST_FAMILY
This commit is contained in:
155
docs/all-images-preset.md
Normal file
155
docs/all-images-preset.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# Пресет all-images - Тестирование всех образов
|
||||
|
||||
## Описание
|
||||
|
||||
Пресет `all-images` предназначен для комплексного тестирования Ansible ролей на всех доступных операционных системах проекта. Это самый полный пресет, который включает все 9 образов:
|
||||
|
||||
### Включенные образы
|
||||
|
||||
#### Debian-based системы:
|
||||
- **Ubuntu** (ubuntu-test) - порт 8080
|
||||
- **Debian** (debian-test) - порт 8081
|
||||
- **Alt Linux** (alt-test) - порт 8082
|
||||
- **Astra Linux** (astra-test) - порт 8083
|
||||
|
||||
#### RHEL-based системы:
|
||||
- **CentOS** (centos-test) - порт 8084
|
||||
- **RHEL** (rhel-test) - порт 8085
|
||||
- **AlmaLinux** (alma-test) - порт 8086
|
||||
- **Rocky Linux** (rocky-test) - порт 8087
|
||||
- **RedOS** (redos-test) - порт 8088
|
||||
|
||||
## Использование
|
||||
|
||||
### Запуск тестирования всех образов
|
||||
|
||||
```bash
|
||||
# Тестирование всех образов
|
||||
make role test all-images
|
||||
```
|
||||
|
||||
### Предварительные требования
|
||||
|
||||
1. **Собранные образы** - все образы должны быть собраны:
|
||||
```bash
|
||||
make docker build
|
||||
```
|
||||
|
||||
2. **Достаточно ресурсов** - тест запускает 9 контейнеров одновременно, требуется:
|
||||
- Минимум 8GB RAM
|
||||
- Минимум 4 CPU cores
|
||||
- Достаточно места на диске
|
||||
|
||||
### Особенности
|
||||
|
||||
#### Порты
|
||||
Каждый контейнер использует уникальный порт для доступа:
|
||||
- Ubuntu: `localhost:8080`
|
||||
- Debian: `localhost:8081`
|
||||
- Alt Linux: `localhost:8082`
|
||||
- Astra Linux: `localhost:8083`
|
||||
- CentOS: `localhost:8084`
|
||||
- RHEL: `localhost:8085`
|
||||
- AlmaLinux: `localhost:8086`
|
||||
- Rocky Linux: `localhost:8087`
|
||||
- RedOS: `localhost:8088`
|
||||
|
||||
#### Переменные окружения
|
||||
Каждый контейнер получает переменные:
|
||||
- `TEST_OS` - название ОС
|
||||
- `TEST_FAMILY` - семейство ОС (Debian/RedHat/Altlinux/Astra Linux)
|
||||
|
||||
#### Специальные настройки
|
||||
- **Astra Linux**: автоматическое отключение Parsec
|
||||
- **Все образы**: предустановленный sudo с настройкой sudoers
|
||||
- **Systemd**: полная поддержка systemd в контейнерах
|
||||
|
||||
## Производительность
|
||||
|
||||
### Время выполнения
|
||||
- **Создание контейнеров**: ~2-3 минуты
|
||||
- **Тестирование ролей**: зависит от сложности ролей
|
||||
- **Очистка**: ~30 секунд
|
||||
|
||||
### Ресурсы
|
||||
- **RAM**: 8-16GB (рекомендуется)
|
||||
- **CPU**: 4-8 cores
|
||||
- **Диск**: 10-20GB свободного места
|
||||
|
||||
## Отладка
|
||||
|
||||
### Проверка статуса контейнеров
|
||||
```bash
|
||||
# Список запущенных контейнеров
|
||||
docker ps --filter "network=labnet"
|
||||
|
||||
# Логи конкретного контейнера
|
||||
docker logs ubuntu-test
|
||||
docker logs astra-test
|
||||
```
|
||||
|
||||
### Проблемы и решения
|
||||
|
||||
#### Контейнеры не запускаются
|
||||
1. Проверьте, что образы собраны:
|
||||
```bash
|
||||
docker images | grep inecs/ansible-lab
|
||||
```
|
||||
|
||||
2. Пересоберите образы:
|
||||
```bash
|
||||
make docker rebuild
|
||||
```
|
||||
|
||||
#### Astra Linux перезапускается
|
||||
- Проблема решена в Dockerfile (отключение Parsec)
|
||||
- Если проблема остается, проверьте логи:
|
||||
```bash
|
||||
docker logs astra-test
|
||||
```
|
||||
|
||||
#### Нехватка ресурсов
|
||||
- Уменьшите количество контейнеров в пресете
|
||||
- Используйте пресет `minimal` для быстрого тестирования
|
||||
|
||||
## Альтернативные пресеты
|
||||
|
||||
Если `all-images` слишком ресурсоемкий, используйте:
|
||||
|
||||
- `minimal` - 1 контейнер (Debian)
|
||||
- `default` - 2 контейнера (Debian + RHEL)
|
||||
- `multi-os` - 12 контейнеров (разные ОС)
|
||||
|
||||
## Мониторинг
|
||||
|
||||
### Логи тестирования
|
||||
```bash
|
||||
# Просмотр логов ansible-controller
|
||||
docker logs ansible-controller
|
||||
|
||||
# Логи конкретного playbook
|
||||
tail -f /tmp/molecule_workspace/logs/ansible.log
|
||||
```
|
||||
|
||||
### Метрики производительности
|
||||
- Время выполнения каждого этапа
|
||||
- Использование ресурсов
|
||||
- Количество успешных/неудачных тестов
|
||||
|
||||
## Интеграция с CI/CD
|
||||
|
||||
Пресет `all-images` идеально подходит для:
|
||||
- **GitHub Actions** - полное тестирование на всех ОС
|
||||
- **GitLab CI** - комплексная проверка совместимости
|
||||
- **Jenkins** - автоматическое тестирование релизов
|
||||
|
||||
### Пример для GitHub Actions
|
||||
```yaml
|
||||
- name: Test all images
|
||||
run: make role test all-images
|
||||
timeout-minutes: 30
|
||||
```
|
||||
|
||||
## Заключение
|
||||
|
||||
Пресет `all-images` обеспечивает максимальное покрытие тестирования, гарантируя совместимость Ansible ролей со всеми поддерживаемыми операционными системами. Это критически важно для production-окружений с разнородной инфраструктурой.
|
||||
Reference in New Issue
Block a user