Files
DevOpsLab/docs/site-yml-guide.md
Сергей Антропов 94560ffaaa feat: Полная переработка документации и структуры проекта
- Переписан главный 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 с новыми командами автоматизации
- Улучшена навигация по документации
2025-10-25 18:11:36 +03:00

8.0 KiB
Raw Permalink Blame History

Руководство по файлу site.yml

Автор: Сергей Антропов
Сайт: https://devops.org.ru

📋 Описание

Файл molecule/default/site.yml является универсальным playbook'ом для тестирования Ansible ролей в контейнерах. Этот файл отвечает за подготовку окружения и установку необходимых утилит внутри контейнеров при запуске тестов.

🎯 Назначение

Основные функции:

  1. Обновление пакетов в контейнерах при запуске тестов
  2. Установка common tools для корректной работы тестов
  3. Подготовка окружения для тестирования ролей
  4. Импорт 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

Что происходит:

  1. Обнаруживаются все роли в директории roles/
  2. Обновляется секция "Тестирование всех ролей"
  3. Добавляются новые роли в список

📝 Примеры использования

Тестирование конкретной роли

# Тестирование только роли ping
make role test minimal ping

Тестирование с конкретным preset'ом

# Тестирование с preset'ом performance
make role test performance

Отладка проблем

# Запуск с подробным выводом
make role test --verbose

🎯 Лучшие практики

  1. Всегда используйте теги для разделения задач
  2. Проверяйте совместимость утилит с ОС
  3. Тестируйте на разных образах перед коммитом
  4. Используйте idempotent задачи для стабильности
  5. Документируйте изменения в комментариях

🔗 Связанные файлы

  • molecule/default/molecule.yml - конфигурация Molecule
  • roles/deploy.yml - playbook для продакшн развертывания
  • inventory/hosts.ini - инвентори для тестирования
  • Makefile - команды для запуска тестов