Files
DevOpsLab/docs/all-images-preset.md
Сергей Антропов 692fe8c6c0
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
Удалена папка dockerfiles/debian и обновлены все конфигурации
- Удалена папка dockerfiles/debian
- Обновлены все presets/*.yml файлы с новыми образами
- Обновлена документация в соответствии с новыми возможностями
- Добавлены новые версии Ubuntu (20.04, 22.04, 24.04)
- Добавлены новые версии CentOS (7, 8, 9)
- Добавлены новые версии Debian (9, 10, 11, 12)
- Обновлены family в hosts секциях
- Обновлена документация по поддержке платформ
2025-10-26 00:08:56 +03:00

6.1 KiB
Raw Permalink Blame History

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

Использование

Запуск тестирования всех образов

# Тестирование всех образов
make role test all-images

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

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

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

Отладка

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

# Список запущенных контейнеров
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-окружений с разнородной инфраструктурой.