- Переписан главный 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 с новыми командами автоматизации - Улучшена навигация по документации
		
			
				
	
	
		
			249 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Руководство по файлу site.yml
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru
 | ||
| 
 | ||
| ## 📋 Описание
 | ||
| 
 | ||
| Файл `molecule/default/site.yml` является **универсальным playbook'ом для тестирования Ansible ролей** в контейнерах. Этот файл отвечает за подготовку окружения и установку необходимых утилит внутри контейнеров при запуске тестов.
 | ||
| 
 | ||
| ## 🎯 Назначение
 | ||
| 
 | ||
| ### Основные функции:
 | ||
| 
 | ||
| 1. **Обновление пакетов** в контейнерах при запуске тестов
 | ||
| 2. **Установка common tools** для корректной работы тестов
 | ||
| 3. **Подготовка окружения** для тестирования ролей
 | ||
| 4. **Импорт roles/deploy.yml** для запуска ролей
 | ||
| 
 | ||
| ## 🏗️ Структура файла
 | ||
| 
 | ||
| ### 1. Подготовка окружения для тестирования
 | ||
| 
 | ||
| ```yaml
 | ||
| - name: Подготовка окружения для тестирования
 | ||
|   hosts: all
 | ||
|   become: true
 | ||
|   tasks:
 | ||
|     # Задачи подготовки...
 | ||
| ```
 | ||
| 
 | ||
| **Что делает:**
 | ||
| - Обновляет кеш пакетов для всех поддерживаемых ОС
 | ||
| - Устанавливает необходимые утилиты
 | ||
| - Настраивает пользователя для тестирования
 | ||
| - Создает рабочие директории
 | ||
| 
 | ||
| ### 2. Импорт deploy.yml
 | ||
| 
 | ||
| ```yaml
 | ||
| - 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
 | ||
| - Тестирование функциональности
 | ||
| - Проверка работоспособности
 | ||
| 
 | ||
| ## 🚀 Использование
 | ||
| 
 | ||
| ### Запуск полного тестирования
 | ||
| ```bash
 | ||
| make role test
 | ||
| ```
 | ||
| 
 | ||
| ### Запуск только подготовки окружения
 | ||
| ```bash
 | ||
| make role test --tags setup
 | ||
| ```
 | ||
| 
 | ||
| ### Запуск только обновления пакетов
 | ||
| ```bash
 | ||
| make role test --tags update
 | ||
| ```
 | ||
| 
 | ||
| ### Запуск только установки утилит
 | ||
| ```bash
 | ||
| make role test --tags tools
 | ||
| ```
 | ||
| 
 | ||
| ### Запуск только тестирования ролей
 | ||
| ```bash
 | ||
| make role test --tags roles
 | ||
| ```
 | ||
| 
 | ||
| ## 🔧 Настройка
 | ||
| 
 | ||
| ### Переменные окружения
 | ||
| 
 | ||
| ```bash
 | ||
| # Настройка тестового пользователя
 | ||
| export TEST_USER=testuser
 | ||
| 
 | ||
| # Настройка рабочей директории
 | ||
| export TEST_DIR=/tmp/ansible-test
 | ||
| 
 | ||
| # Настройка прав доступа
 | ||
| export TEST_MODE=0755
 | ||
| ```
 | ||
| 
 | ||
| ### Кастомизация утилит
 | ||
| 
 | ||
| Для добавления дополнительных утилит отредактируйте соответствующие секции:
 | ||
| 
 | ||
| ```yaml
 | ||
| # Для Debian/Ubuntu
 | ||
| - name: Install common tools (Debian/Ubuntu)
 | ||
|   apt:
 | ||
|     name:
 | ||
|       - curl
 | ||
|       - jq
 | ||
|       - your-custom-tool  # Добавьте сюда
 | ||
|     state: present
 | ||
| ```
 | ||
| 
 | ||
| ## 🐛 Troubleshooting
 | ||
| 
 | ||
| ### Проблема: Ошибка обновления пакетов
 | ||
| **Решение:** Проверьте доступность репозиториев и интернет-соединение
 | ||
| 
 | ||
| ### Проблема: Не удается установить утилиты
 | ||
| **Решение:** Проверьте названия пакетов для конкретной ОС
 | ||
| 
 | ||
| ### Проблема: Ошибка создания пользователя
 | ||
| **Решение:** Проверьте права доступа и существование пользователя
 | ||
| 
 | ||
| ### Проблема: Ошибка настройки sudo
 | ||
| **Решение:** Проверьте синтаксис файла sudoers
 | ||
| 
 | ||
| ## 📊 Мониторинг
 | ||
| 
 | ||
| ### Логи выполнения
 | ||
| ```bash
 | ||
| # Просмотр логов тестирования
 | ||
| make role test 2>&1 | tee test.log
 | ||
| 
 | ||
| # Фильтрация по тегам
 | ||
| grep "TASK \[.*\]" test.log
 | ||
| ```
 | ||
| 
 | ||
| ### Проверка установленных утилит
 | ||
| ```bash
 | ||
| # В контейнере
 | ||
| which curl jq vim git
 | ||
| ```
 | ||
| 
 | ||
| ### Проверка пользователя
 | ||
| ```bash
 | ||
| # В контейнере
 | ||
| id testuser
 | ||
| sudo -l -U testuser
 | ||
| ```
 | ||
| 
 | ||
| ## 🔄 Автоматическое обновление
 | ||
| 
 | ||
| Файл `site.yml` автоматически обновляется при добавлении новых ролей:
 | ||
| 
 | ||
| ```bash
 | ||
| # Автоматическое обновление
 | ||
| make update-playbooks
 | ||
| ```
 | ||
| 
 | ||
| **Что происходит:**
 | ||
| 1. Обнаруживаются все роли в директории `roles/`
 | ||
| 2. Обновляется секция "Тестирование всех ролей"
 | ||
| 3. Добавляются новые роли в список
 | ||
| 
 | ||
| ## 📝 Примеры использования
 | ||
| 
 | ||
| ### Тестирование конкретной роли
 | ||
| ```bash
 | ||
| # Тестирование только роли ping
 | ||
| make role test minimal ping
 | ||
| ```
 | ||
| 
 | ||
| ### Тестирование с конкретным preset'ом
 | ||
| ```bash
 | ||
| # Тестирование с preset'ом performance
 | ||
| make role test performance
 | ||
| ```
 | ||
| 
 | ||
| ### Отладка проблем
 | ||
| ```bash
 | ||
| # Запуск с подробным выводом
 | ||
| make role test --verbose
 | ||
| ```
 | ||
| 
 | ||
| ## 🎯 Лучшие практики
 | ||
| 
 | ||
| 1. **Всегда используйте теги** для разделения задач
 | ||
| 2. **Проверяйте совместимость** утилит с ОС
 | ||
| 3. **Тестируйте на разных образах** перед коммитом
 | ||
| 4. **Используйте idempotent задачи** для стабильности
 | ||
| 5. **Документируйте изменения** в комментариях
 | ||
| 
 | ||
| ## 🔗 Связанные файлы
 | ||
| 
 | ||
| - `molecule/default/molecule.yml` - конфигурация Molecule
 | ||
| - `roles/deploy.yml` - playbook для продакшн развертывания
 | ||
| - `inventory/hosts.ini` - инвентори для тестирования
 | ||
| - `Makefile` - команды для запуска тестов
 |