- Создан пресет 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
5.5 KiB
Пресет 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
Использование
Запуск тестирования всех образов
# Тестирование всех образов
make role test all-images
Предварительные требования
-
Собранные образы - все образы должны быть собраны:
make docker build -
Достаточно ресурсов - тест запускает 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 свободного места
Отладка
Проверка статуса контейнеров
# Список запущенных контейнеров
docker ps --filter "network=labnet"
# Логи конкретного контейнера
docker logs ubuntu-test
docker logs astra-test
Проблемы и решения
Контейнеры не запускаются
-
Проверьте, что образы собраны:
docker images | grep inecs/ansible-lab -
Пересоберите образы:
make docker rebuild
Astra Linux перезапускается
- Проблема решена в Dockerfile (отключение Parsec)
- Если проблема остается, проверьте логи:
docker logs astra-test
Нехватка ресурсов
- Уменьшите количество контейнеров в пресете
- Используйте пресет
minimalдля быстрого тестирования
Альтернативные пресеты
Если all-images слишком ресурсоемкий, используйте:
minimal- 1 контейнер (Debian)default- 2 контейнера (Debian + RHEL)multi-os- 12 контейнеров (разные ОС)
Мониторинг
Логи тестирования
# Просмотр логов 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
- name: Test all images
run: make role test all-images
timeout-minutes: 30
Заключение
Пресет all-images обеспечивает максимальное покрытие тестирования, гарантируя совместимость Ansible ролей со всеми поддерживаемыми операционными системами. Это критически важно для production-окружений с разнородной инфраструктурой.