- Добавлена полная поддержка Istio service mesh с Kiali - Интегрированы Helm charts (nginx, prometheus-stack) - Созданы Grafana дашборды для Istio мониторинга - Добавлен HTML генератор отчетов с красивым дизайном - Созданы скрипты для снапшотов и восстановления - Добавлена поддержка Istio Bookinfo demo - Обновлена документация с полным описанием возможностей Компоненты: - Istio с Telemetry и Traffic Policy - Prometheus + Grafana с автопровижинингом дашбордов - HTML отчеты с анализом статусов - Снапшоты и восстановление состояния - Полная интеграция с Kubernetes Автор: Сергей Антропов Сайт: https://devops.org.ru
		
			
				
	
	
		
			216 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Универсальная лаборатория для тестирования Ansible ролей
 | ||
| 
 | ||
| ## Автор
 | ||
| Сергей Антропов  
 | ||
| Сайт: https://devops.org.ru
 | ||
| 
 | ||
| ## Описание
 | ||
| 
 | ||
| Это универсальная лаборатория для тестирования Ansible ролей, созданная на основе предложений ChatGPT. Лаборатория поддерживает:
 | ||
| 
 | ||
| - **Docker-in-Docker (DinD)** - полная изоляция контейнеров
 | ||
| - **Docker-outside-of-Docker (DOoD)** - использование хостового Docker
 | ||
| - **Kind кластеры** - локальные Kubernetes кластеры
 | ||
| - **Helm charts** - nginx, prometheus-stack
 | ||
| - **Istio service mesh** - с Kiali для мониторинга
 | ||
| - **Prometheus + Grafana** - с автопровижинингом дашбордов
 | ||
| - **HTML отчеты** - красивые отчеты о результатах тестирования
 | ||
| 
 | ||
| ## Структура проекта
 | ||
| 
 | ||
| ```
 | ||
| molecule/
 | ||
| ├── universal/           # Универсальная лаборатория
 | ||
| │   ├── molecule.yml     # Конфигурация Molecule
 | ||
| │   ├── vars.yml         # Переменные лаборатории
 | ||
| │   ├── create.yml       # Создание инфраструктуры
 | ||
| │   ├── converge.yml     # Запуск ролей
 | ||
| │   ├── verify.yml       # Проверка работы
 | ||
| │   └── destroy.yml      # Очистка
 | ||
| ├── presets/             # Пресеты для разных сценариев
 | ||
| │   └── k8s-kind.yml     # Пресет для Kubernetes
 | ||
| └── default/             # Старый сценарий (для совместимости)
 | ||
| 
 | ||
| files/
 | ||
| ├── requirements.yml     # Коллекции Ansible
 | ||
| ├── playbooks/
 | ||
| │   └── site.yml         # Основной playbook
 | ||
| └── k8s/                 # Kubernetes манифесты
 | ||
|     └── istio/           # Istio конфигурации
 | ||
| 
 | ||
| roles/                   # Ваши Ansible роли
 | ||
| ```
 | ||
| 
 | ||
| ## Использование
 | ||
| 
 | ||
| ### 1. Подготовка
 | ||
| 
 | ||
| ```bash
 | ||
| # Создать файл с паролем для vault
 | ||
| echo "test" > vault-password.txt
 | ||
| 
 | ||
| # Создать каталог для ролей
 | ||
| mkdir -p roles
 | ||
| 
 | ||
| # Скопировать переменные окружения
 | ||
| cp env.example .env
 | ||
| # Отредактировать .env под ваши нужды
 | ||
| ```
 | ||
| 
 | ||
| ### 2. Запуск лаборатории
 | ||
| 
 | ||
| ```bash
 | ||
| # Поднять контроллер
 | ||
| make lab-up
 | ||
| 
 | ||
| # Создать инфраструктуру
 | ||
| make lab-create
 | ||
| 
 | ||
| # Запустить роли
 | ||
| make lab-converge
 | ||
| 
 | ||
| # Проверить работу
 | ||
| make lab-verify
 | ||
| 
 | ||
| # Сгенерировать HTML отчет
 | ||
| make lab-report
 | ||
| 
 | ||
| # Уничтожить лабораторию
 | ||
| make lab-destroy
 | ||
| ```
 | ||
| 
 | ||
| ### 3. Управление лабораторией
 | ||
| 
 | ||
| ```bash
 | ||
| # Полный цикл тестирования
 | ||
| make lab-test
 | ||
| 
 | ||
| # Снапшоты и восстановление
 | ||
| make lab-snapshot    # Сохранить состояние
 | ||
| make lab-restore     # Восстановить из снапшота
 | ||
| make lab-cleanup     # Очистить все
 | ||
| 
 | ||
| # Сброс лаборатории
 | ||
| make lab-reset
 | ||
| ```
 | ||
| 
 | ||
| ### 3. Работа с Kubernetes
 | ||
| 
 | ||
| ```bash
 | ||
| # Войти в контейнер с kubectl
 | ||
| make kube-sh
 | ||
| 
 | ||
| # Выполнить команду kubectl
 | ||
| make kube-cmd CLUSTER=lab CMD="get pods -A"
 | ||
| 
 | ||
| # Войти в toolbox pod
 | ||
| make kube-enter CLUSTER=lab
 | ||
| 
 | ||
| # Port-forward для Kiali
 | ||
| make kiali-port-forward CLUSTER=lab
 | ||
| 
 | ||
| # Port-forward для Istio Gateway
 | ||
| make istio-gw-port-forward CLUSTER=lab
 | ||
| ```
 | ||
| 
 | ||
| ## Конфигурация
 | ||
| 
 | ||
| ### Переменные лаборатории (molecule/universal/vars.yml)
 | ||
| 
 | ||
| ```yaml
 | ||
| # Сеть для лаборатории
 | ||
| docker_network: labnet
 | ||
| 
 | ||
| # Образы для разных семейств ОС
 | ||
| images:
 | ||
|   debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
 | ||
|   rhel: "quay.io/centos/centos:stream9-systemd"
 | ||
| 
 | ||
| # Определение хостов
 | ||
| hosts:
 | ||
|   - name: etcd1
 | ||
|     group: etcd
 | ||
|     family: debian
 | ||
|   - name: app-dind
 | ||
|     group: apps
 | ||
|     type: dind
 | ||
|     publish:
 | ||
|       - "8080:8080"
 | ||
| 
 | ||
| # Kind кластеры
 | ||
| kind_clusters:
 | ||
|   - name: lab
 | ||
|     workers: 2
 | ||
|     addons:
 | ||
|       ingress_nginx: true
 | ||
|       istio: true
 | ||
|       kiali: true
 | ||
| ```
 | ||
| 
 | ||
| ## Особенности
 | ||
| 
 | ||
| ### 1. Автогенерация инвентаря
 | ||
| Инвентарь генерируется автоматически на основе определения хостов в `vars.yml`.
 | ||
| 
 | ||
| ### 2. Поддержка DinD и DOoD
 | ||
| - **DinD**: Полная изоляция, каждый хост имеет свой Docker daemon
 | ||
| - **DOoD**: Использование хостового Docker, меньше ресурсов
 | ||
| 
 | ||
| ### 3. Kubernetes интеграция
 | ||
| - Автоматическое создание Kind кластеров
 | ||
| - Установка Ingress NGINX, Metrics Server
 | ||
| - Поддержка Istio и Kiali
 | ||
| - Prometheus Stack с Grafana
 | ||
| 
 | ||
| ### 4. Мониторинг и отчеты
 | ||
| - Автоматическая генерация HTML отчетов
 | ||
| - Интеграция с Prometheus и Grafana
 | ||
| - Дашборды для Istio
 | ||
| 
 | ||
| ## Troubleshooting
 | ||
| 
 | ||
| ### Проблемы с образами
 | ||
| Если возникают проблемы с загрузкой образов, обновите `vars.yml`:
 | ||
| 
 | ||
| ```yaml
 | ||
| images:
 | ||
|   debian: "ubuntu:22.04"  # Используйте стандартные образы
 | ||
|   rhel: "centos:8"
 | ||
| ```
 | ||
| 
 | ||
| ### Проблемы с Docker
 | ||
| Убедитесь, что Docker socket доступен:
 | ||
| 
 | ||
| ```bash
 | ||
| ls -la /var/run/docker.sock
 | ||
| ```
 | ||
| 
 | ||
| ### Проблемы с Molecule
 | ||
| Если возникают проблемы с Molecule, попробуйте:
 | ||
| 
 | ||
| ```bash
 | ||
| # Очистить кэш
 | ||
| make lab-reset
 | ||
| 
 | ||
| # Проверить конфигурацию
 | ||
| docker exec ansible-controller bash -lc 'molecule lint -s universal'
 | ||
| ```
 | ||
| 
 | ||
| ## Дальнейшее развитие
 | ||
| 
 | ||
| 1. **Добавить поддержку Terraform** для создания инфраструктуры
 | ||
| 2. **Интегрировать с GitLab CI/CD** для автоматического тестирования
 | ||
| 3. **Добавить поддержку ARM64** для тестирования на Apple Silicon
 | ||
| 4. **Создать веб-интерфейс** для управления лабораторией
 | ||
| 5. **Добавить поддержку OpenShift** для enterprise сценариев
 | ||
| 
 | ||
| ## Лицензия
 | ||
| 
 | ||
| MIT License
 | ||
| 
 | ||
| ## Контакты
 | ||
| 
 | ||
| - Автор: Сергей Антропов
 | ||
| - Сайт: https://devops.org.ru
 | ||
| - Email: [ваш email]
 |