- Создан пресет 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
156 lines
5.5 KiB
Markdown
156 lines
5.5 KiB
Markdown
# Пресет 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-окружений с разнородной инфраструктурой.
|