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
- Удалена папка dockerfiles/debian - Обновлены все presets/*.yml файлы с новыми образами - Обновлена документация в соответствии с новыми возможностями - Добавлены новые версии Ubuntu (20.04, 22.04, 24.04) - Добавлены новые версии CentOS (7, 8, 9) - Добавлены новые версии Debian (9, 10, 11, 12) - Обновлены family в hosts секциях - Обновлена документация по поддержке платформ
170 lines
6.1 KiB
Markdown
170 lines
6.1 KiB
Markdown
# Пресет all-images - Тестирование всех образов
|
||
|
||
## Описание
|
||
|
||
Пресет `all-images` предназначен для комплексного тестирования Ansible ролей на всех доступных операционных системах проекта. Это самый полный пресет, который включает все 16 образов:
|
||
|
||
### Включенные образы
|
||
|
||
#### Debian-based системы:
|
||
- **Ubuntu 20.04** (ubuntu20-test) - порт 8080
|
||
- **Ubuntu 22.04** (ubuntu22-test) - порт 8081
|
||
- **Ubuntu 24.04** (ubuntu24-test) - порт 8082
|
||
- **Debian 9** (debian9-test) - порт 8083
|
||
- **Debian 10** (debian10-test) - порт 8084
|
||
- **Debian 11** (debian11-test) - порт 8085
|
||
- **Debian 12** (debian12-test) - порт 8086
|
||
- **Alt Linux** (alt-test) - порт 8087
|
||
- **Astra Linux** (astra-test) - порт 8088
|
||
|
||
#### RHEL-based системы:
|
||
- **CentOS 7** (centos7-test) - порт 8090
|
||
- **CentOS 8** (centos8-test) - порт 8091
|
||
- **CentOS 9** (centos9-test) - порт 8092
|
||
- **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. **Достаточно ресурсов** - тест запускает 16 контейнеров одновременно, требуется:
|
||
- Минимум 16GB RAM
|
||
- Минимум 8 CPU cores
|
||
- Достаточно места на диске
|
||
|
||
### Особенности
|
||
|
||
#### Порты
|
||
Каждый контейнер использует уникальный порт для доступа:
|
||
- Ubuntu 20.04: `localhost:8080`
|
||
- Ubuntu 22.04: `localhost:8081`
|
||
- Ubuntu 24.04: `localhost:8082`
|
||
- Debian 9: `localhost:8083`
|
||
- Debian 10: `localhost:8084`
|
||
- Debian 11: `localhost:8085`
|
||
- Debian 12: `localhost:8086`
|
||
- Alt Linux: `localhost:8087`
|
||
- Astra Linux: `localhost:8088`
|
||
- CentOS 7: `localhost:8090`
|
||
- CentOS 8: `localhost:8091`
|
||
- CentOS 9: `localhost:8092`
|
||
- 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**: 16-32GB (рекомендуется)
|
||
- **CPU**: 8-16 cores
|
||
- **Диск**: 20-40GB свободного места
|
||
|
||
## Отладка
|
||
|
||
### Проверка статуса контейнеров
|
||
```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-окружений с разнородной инфраструктурой.
|