Files
DevOpsLab/docs/all-images-preset.md
Сергей Антропов 9ce30e0d67 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
2025-10-25 19:00:34 +03:00

5.5 KiB
Raw Blame History

Пресет 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

Предварительные требования

  1. Собранные образы - все образы должны быть собраны:

    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 свободного места

Отладка

Проверка статуса контейнеров

# Список запущенных контейнеров
docker ps --filter "network=labnet"

# Логи конкретного контейнера
docker logs ubuntu-test
docker logs astra-test

Проблемы и решения

Контейнеры не запускаются

  1. Проверьте, что образы собраны:

    docker images | grep inecs/ansible-lab
    
  2. Пересоберите образы:

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