# Тестирование vs Развертывание ## Автор: Сергей Антропов ## Сайт: https://devops.org.ru ## Различие между тестированием и развертыванием ### 🧪 Тестирование (molecule) **Команда:** `make role test [preset]` **Использует:** - Динамический inventory, создаваемый в `molecule/default/create.yml` - Preset файлы из `molecule/presets/` - Docker контейнеры для изоляции тестов - Временные контейнеры (u1, u2, u3) **Процесс:** 1. Загружается preset конфигурация 2. Создаются Docker контейнеры согласно preset 3. Генерируется временный inventory файл 4. Запускаются тесты на контейнерах 5. Контейнеры удаляются после тестов **Пример:** ```bash make role test standart # Тестирование в 3 контейнерах make role test minimal # Тестирование в 1 контейнере ``` ### 🚀 Развертывание (deploy) **Команда:** `make role deploy` **Использует:** - Статический inventory файл `inventory/hosts.ini` - Реальные серверы - SSH подключение **Процесс:** 1. Проверяется наличие `inventory/hosts.ini` 2. Показывается содержимое inventory 3. Запускается dry-run (--check) 4. Запрашивается подтверждение 5. Выполняется развертывание на реальные серверы **Пример:** ```bash make role deploy # Развертывание на реальные серверы ``` ## Конфигурация ### Для тестирования - Preset файлы: `molecule/presets/*.yml` - Динамический inventory создается в `create.yml` - Контейнеры: Docker ### Для развертывания - Inventory файл: `inventory/hosts.ini` - Серверы: Реальные хосты - Подключение: SSH ## Примеры конфигурации ### Preset для тестирования (molecule/presets/standart.yml) ```yaml hosts: - name: u1 family: debian groups: [test] - name: u2 family: rhel groups: [test] - name: u3 family: debian groups: [test] ``` ### Inventory для развертывания (inventory/hosts.ini) ```ini [web_servers] web1 ansible_host=192.168.1.10 ansible_user=ubuntu web2 ansible_host=192.168.1.11 ansible_user=ubuntu [db_servers] db1 ansible_host=192.168.1.20 ansible_user=ubuntu [all:vars] ansible_ssh_private_key_file=~/.ssh/id_rsa ansible_ssh_common_args='-o StrictHostKeyChecking=no' ``` ## Рекомендации 1. **Сначала тестируйте** с помощью `make role test [preset]` 2. **Затем развертывайте** с помощью `make role deploy` 3. **Используйте разные preset'ы** для разных сценариев тестирования 4. **Настройте inventory** для ваших реальных серверов