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