# Пресет 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-окружений с разнородной инфраструктурой.