Files
DevOpsLab/docs/testing-vs-deployment.md

100 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Тестирование 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** для ваших реальных серверов