- Переписан главный README.md с подробной навигацией - Создана структурированная документация в docs/: - getting-started.md - быстрый старт - creating-roles.md - создание ролей - cicd-setup.md - настройка CI/CD - monitoring.md - мониторинг и диагностика - site-yml-guide.md - руководство по site.yml - molecule-guide.md - подробное руководство по Molecule - Переписан dockerfiles/README.md с детальным описанием всех образов - Перенесен deploy.yml из корня в roles/ для лучшей организации - Обновлен site.yml для импорта roles/deploy.yml - Добавлены fallback значения в create.yml для надежности - Созданы скрипты автоматизации: - update-playbooks.sh - обновление playbook'ов - generate-role-docs.sh - генерация документации - setup-cicd.sh - настройка CI/CD - Добавлен env.example с примерами переменных - Обновлен Makefile с новыми командами автоматизации - Улучшена навигация по документации
8.0 KiB
8.0 KiB
Руководство по файлу site.yml
Автор: Сергей Антропов
Сайт: https://devops.org.ru
📋 Описание
Файл molecule/default/site.yml является универсальным playbook'ом для тестирования Ansible ролей в контейнерах. Этот файл отвечает за подготовку окружения и установку необходимых утилит внутри контейнеров при запуске тестов.
🎯 Назначение
Основные функции:
- Обновление пакетов в контейнерах при запуске тестов
- Установка common tools для корректной работы тестов
- Подготовка окружения для тестирования ролей
- Импорт roles/deploy.yml для запуска ролей
🏗️ Структура файла
1. Подготовка окружения для тестирования
- name: Подготовка окружения для тестирования
hosts: all
become: true
tasks:
# Задачи подготовки...
Что делает:
- Обновляет кеш пакетов для всех поддерживаемых ОС
- Устанавливает необходимые утилиты
- Настраивает пользователя для тестирования
- Создает рабочие директории
2. Импорт deploy.yml
- import_playbook: ../../roles/deploy.yml
Что делает:
- Импортирует
roles/deploy.ymlдля запуска ролей - Разделяет логику:
site.yml- подготовка,deploy.yml- роли - Обеспечивает единую точку управления ролями
🐧 Поддерживаемые ОС
Debian/Ubuntu
- Менеджер пакетов:
apt - Обновление:
apt update - Утилиты:
curl,jq,ca-certificates,iproute2,iputils-ping,procps,net-tools,sudo,vim,wget,unzip,git
RHEL/CentOS/AlmaLinux/Rocky
- Менеджер пакетов:
yum - Обновление:
yum update_cache - Утилиты:
curl,jq,ca-certificates,iproute,iputils,procps-ng,net-tools,sudo,vim,wget,unzip,git
Alt Linux
- Менеджер пакетов:
apt(специальная версия) - Обновление:
apt update - Утилиты:
curl,jq,ca-certificates,iproute2,iputils,procps,net-tools,sudo,vim,wget,unzip,git
🏷️ Теги (Tags)
setup
- Обновление пакетов
- Установка утилит
- Настройка пользователей
- Создание директорий
update
- Обновление кеша пакетов
- Обновление списка пакетов
tools
- Установка common tools
- Установка системных утилит
python
- Установка Python 3
- Установка pip
- Установка venv
user
- Создание тестового пользователя
- Настройка домашней директории
sudo
- Настройка sudo для тестового пользователя
- Конфигурация прав доступа
directory
- Создание рабочих директорий
- Настройка прав доступа
roles
- Запуск тестирования ролей
- Выполнение функциональных тестов
test
- Тестирование функциональности
- Проверка работоспособности
🚀 Использование
Запуск полного тестирования
make role test
Запуск только подготовки окружения
make role test --tags setup
Запуск только обновления пакетов
make role test --tags update
Запуск только установки утилит
make role test --tags tools
Запуск только тестирования ролей
make role test --tags roles
🔧 Настройка
Переменные окружения
# Настройка тестового пользователя
export TEST_USER=testuser
# Настройка рабочей директории
export TEST_DIR=/tmp/ansible-test
# Настройка прав доступа
export TEST_MODE=0755
Кастомизация утилит
Для добавления дополнительных утилит отредактируйте соответствующие секции:
# Для Debian/Ubuntu
- name: Install common tools (Debian/Ubuntu)
apt:
name:
- curl
- jq
- your-custom-tool # Добавьте сюда
state: present
🐛 Troubleshooting
Проблема: Ошибка обновления пакетов
Решение: Проверьте доступность репозиториев и интернет-соединение
Проблема: Не удается установить утилиты
Решение: Проверьте названия пакетов для конкретной ОС
Проблема: Ошибка создания пользователя
Решение: Проверьте права доступа и существование пользователя
Проблема: Ошибка настройки sudo
Решение: Проверьте синтаксис файла sudoers
📊 Мониторинг
Логи выполнения
# Просмотр логов тестирования
make role test 2>&1 | tee test.log
# Фильтрация по тегам
grep "TASK \[.*\]" test.log
Проверка установленных утилит
# В контейнере
which curl jq vim git
Проверка пользователя
# В контейнере
id testuser
sudo -l -U testuser
🔄 Автоматическое обновление
Файл site.yml автоматически обновляется при добавлении новых ролей:
# Автоматическое обновление
make update-playbooks
Что происходит:
- Обнаруживаются все роли в директории
roles/ - Обновляется секция "Тестирование всех ролей"
- Добавляются новые роли в список
📝 Примеры использования
Тестирование конкретной роли
# Тестирование только роли ping
make role test minimal ping
Тестирование с конкретным preset'ом
# Тестирование с preset'ом performance
make role test performance
Отладка проблем
# Запуск с подробным выводом
make role test --verbose
🎯 Лучшие практики
- Всегда используйте теги для разделения задач
- Проверяйте совместимость утилит с ОС
- Тестируйте на разных образах перед коммитом
- Используйте idempotent задачи для стабильности
- Документируйте изменения в комментариях
🔗 Связанные файлы
molecule/default/molecule.yml- конфигурация Moleculeroles/deploy.yml- playbook для продакшн развертыванияinventory/hosts.ini- инвентори для тестированияMakefile- команды для запуска тестов