feat: Добавлен пресет all-images и установка sudo во все Dockerfile
- Создан пресет 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
This commit is contained in:
		
							
								
								
									
										155
									
								
								docs/all-images-preset.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								docs/all-images-preset.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,155 @@ | ||||
| # Пресет 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-окружений с разнородной инфраструктурой. | ||||
		Reference in New Issue
	
	Block a user