- Обновлен README.md с новыми возможностями COD preset и роли devops - Добавлена документация по COD preset (docs/cod-preset.md) - Добавлена документация по роли devops (docs/devops-role.md) - Обновлена документация по ARM64 поддержке (docs/arm64-support.md) - Обновлены примеры использования (docs/examples.md) - Исправлен Dockerfile для RHEL с Python 3.11 из EPEL - Обновлен COD preset с 6 контейнерами (Ubuntu + Debian + Alt + Astra + CentOS + RHEL) - Улучшена роль devops с поддержкой российских ОС - Добавлен CHANGELOG.md с историей изменений - Все изменения протестированы на ARM64 архитектуре
		
			
				
	
	
		
			382 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			382 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Примеры использования DevOpsLab
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru  
 | ||
| **Версия:** 3.0.0
 | ||
| 
 | ||
| ## Быстрый старт
 | ||
| 
 | ||
| ### Базовое тестирование роли
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование роли ping с minimal preset (1 хост)
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Тестирование роли docker с default preset (2 хоста)
 | ||
| make role lint docker
 | ||
| make role test docker
 | ||
| ```
 | ||
| 
 | ||
| ### Просмотр доступных preset'ов
 | ||
| 
 | ||
| ```bash
 | ||
| # Список всех preset'ов
 | ||
| make presets list
 | ||
| 
 | ||
| # Информация о конкретном preset'е
 | ||
| make presets info PRESET=default
 | ||
| make presets info PRESET=all-images
 | ||
| ```
 | ||
| 
 | ||
| ## Пример 1: Тестирование роли Docker
 | ||
| 
 | ||
| ### Описание
 | ||
| Тестирование универсальной роли Docker на разных ОС.
 | ||
| 
 | ||
| ```bash
 | ||
| # Lint проверка
 | ||
| make role lint docker
 | ||
| 
 | ||
| # Тестирование с minimal preset (1 хост Debian)
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Тестирование с default preset (Ubuntu + Debian)
 | ||
| make role test default
 | ||
| 
 | ||
| # Тестирование с preset all-images (16 хостов, все ОС)
 | ||
| make role test all-images
 | ||
| ```
 | ||
| 
 | ||
| ### Проверка результатов
 | ||
| 
 | ||
| ```bash
 | ||
| # Просмотр созданных контейнеров
 | ||
| docker ps -a --filter "network=labnet"
 | ||
| 
 | ||
| # Просмотр логов контейнера
 | ||
| docker logs $(docker ps -aq --filter "network=labnet" | head -1)
 | ||
| 
 | ||
| # Вход в контейнер для проверки
 | ||
| docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash
 | ||
| ```
 | ||
| 
 | ||
| ## Пример 2: Использование роли devops
 | ||
| 
 | ||
| ### Описание роли devops
 | ||
| 
 | ||
| Роль `devops` - это универсальная роль для настройки пользователей и SSH ключей на всех поддерживаемых ОС.
 | ||
| 
 | ||
| **Возможности:**
 | ||
| - Создание пользователя `devops` с настройкой пароля
 | ||
| - Установка SSH публичного ключа
 | ||
| - Настройка sudo прав
 | ||
| - Автоматическое определение ОС и применение соответствующих конфигураций
 | ||
| - Поддержка российских ОС (Alt Linux, Astra Linux, RedOS)
 | ||
| 
 | ||
| ### Тестирование роли devops
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование с COD preset (6 хостов)
 | ||
| make role test cod
 | ||
| 
 | ||
| # Проверка результатов
 | ||
| docker exec -it ubuntu1 id devops
 | ||
| docker exec -it alt1 id devops
 | ||
| docker exec -it astra1 id devops
 | ||
| ```
 | ||
| 
 | ||
| ### Использование в других ролях
 | ||
| 
 | ||
| ```yaml
 | ||
| # В вашем playbook
 | ||
| - name: Настройка пользователя devops
 | ||
|   include_role:
 | ||
|     name: devops
 | ||
|   vars:
 | ||
|     devops_user: "devops"
 | ||
|     devops_password: "{{ vault_devops_password }}"
 | ||
|     devops_ssh_public_key: "{{ vault_devops_ssh_public_key }}"
 | ||
| ```
 | ||
| 
 | ||
| ## Пример 3: Создание собственной роли
 | ||
| 
 | ||
| ### Создание роли
 | ||
| 
 | ||
| ```bash
 | ||
| # Интерактивное создание новой роли
 | ||
| make role create
 | ||
| # Введите имя роли: nginx
 | ||
| 
 | ||
| # Редактирование роли
 | ||
| cd roles/nginx
 | ||
| nano tasks/main.yml
 | ||
| ```
 | ||
| 
 | ||
| ### Разработка роли
 | ||
| 
 | ||
| **`roles/nginx/tasks/main.yml`:**
 | ||
| ```yaml
 | ||
| ---
 | ||
| - name: Установка nginx
 | ||
|   package:
 | ||
|     name: nginx
 | ||
|     state: present
 | ||
|   when: ansible_os_family in ['Debian', 'RedHat']
 | ||
| 
 | ||
| - name: Запуск nginx
 | ||
|   systemd:
 | ||
|     name: nginx
 | ||
|     state: started
 | ||
|     enabled: yes
 | ||
| ```
 | ||
| 
 | ||
| ### Тестирование роли
 | ||
| 
 | ||
| ```bash
 | ||
| # Lint проверка
 | ||
| make role lint nginx
 | ||
| 
 | ||
| # Тестирование с minimal preset
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Проверка работы nginx
 | ||
| docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) systemctl status nginx
 | ||
| ```
 | ||
| 
 | ||
| ## Пример 4: Использование preset'ов
 | ||
| 
 | ||
| ### Minimal preset (1 хост)
 | ||
| 
 | ||
| ```bash
 | ||
| # Быстрое тестирование на 1 хосте
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Проверка контейнера
 | ||
| docker ps -a --filter "network=labnet"
 | ||
| ```
 | ||
| 
 | ||
| ### Default preset (2 хоста)
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование на Ubuntu + Debian
 | ||
| make role test default
 | ||
| 
 | ||
| # Проверка нескольких контейнеров
 | ||
| docker ps -a --filter "network=labnet"
 | ||
| ```
 | ||
| 
 | ||
| ### COD preset (6 хостов) - ARM64
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование на Ubuntu + Debian + Alt + Astra + CentOS + RHEL
 | ||
| make role test cod
 | ||
| 
 | ||
| # Проверка всех контейнеров
 | ||
| docker ps -a --filter "network=labnet" --format "table {{.Names}}\t{{.Status}}"
 | ||
| ```
 | ||
| 
 | ||
| **Особенности COD preset:**
 | ||
| - **Платформа**: ARM64 (нативная поддержка)
 | ||
| - **ОС**: Ubuntu 22.04, Debian 12, Alt Linux 10, Astra Linux, CentOS Stream 9, RHEL
 | ||
| - **Группы**: `cod`, `ubuntu`, `debian`, `alt`, `astra`, `centos`, `rhel`
 | ||
| - **Использование**: Полное тестирование на российских и зарубежных ОС
 | ||
| 
 | ||
| ### All-images preset (16 хостов)
 | ||
| 
 | ||
| ```bash
 | ||
| # Полное тестирование всех ОС
 | ||
| make role test all-images
 | ||
| 
 | ||
| # Проверка всех контейнеров
 | ||
| docker ps -a --filter "network=labnet" --format "table {{.Names}}\t{{.Status}}"
 | ||
| ```
 | ||
| 
 | ||
| ### Preset'ы по ОС
 | ||
| 
 | ||
| ```bash
 | ||
| # Тестирование на всех версиях Ubuntu
 | ||
| make role test ubuntu-all
 | ||
| 
 | ||
| # Тестирование на всех версиях Debian
 | ||
| make role test debian-all
 | ||
| 
 | ||
| # Тестирование на всех версиях CentOS
 | ||
| make role test centos-all
 | ||
| ```
 | ||
| 
 | ||
| ## Пример 5: Работа с Ansible Vault
 | ||
| 
 | ||
| ### Создание секретов
 | ||
| 
 | ||
| ```bash
 | ||
| # Инициализация vault
 | ||
| make vault init
 | ||
| 
 | ||
| # Создание нового файла секретов
 | ||
| make vault create
 | ||
| # Имя файла: secrets
 | ||
| ```
 | ||
| 
 | ||
| ### Редактирование секретов
 | ||
| 
 | ||
| ```bash
 | ||
| # Редактирование
 | ||
| make vault edit
 | ||
| # Имя файла: secrets
 | ||
| 
 | ||
| # Просмотр секретов
 | ||
| make vault show
 | ||
| # Имя файла: secrets
 | ||
| ```
 | ||
| 
 | ||
| ### Использование в тестировании
 | ||
| 
 | ||
| Секреты автоматически расшифровываются при запуске тестов и шифруются обратно после завершения.
 | ||
| 
 | ||
| ## Пример 6: CI/CD интеграция
 | ||
| 
 | ||
| ### GitHub Actions
 | ||
| 
 | ||
| ```yaml
 | ||
| name: Ansible Tests
 | ||
| on: [push, pull_request]
 | ||
| 
 | ||
| jobs:
 | ||
|   test:
 | ||
|     runs-on: ubuntu-latest
 | ||
|     steps:
 | ||
|       - uses: actions/checkout@v4
 | ||
|       - name: Run tests
 | ||
|         run: |
 | ||
|           make role lint
 | ||
|           make role test minimal
 | ||
| ```
 | ||
| 
 | ||
| ### GitLab CI
 | ||
| 
 | ||
| ```yaml
 | ||
| test:
 | ||
|   script:
 | ||
|     - make role lint
 | ||
|     - make role test minimal
 | ||
|   only:
 | ||
|     - merge_requests
 | ||
|     - main
 | ||
| ```
 | ||
| 
 | ||
| ## Пример 7: Диагностика и отладка
 | ||
| 
 | ||
| ### Проверка линтинга
 | ||
| 
 | ||
| ```bash
 | ||
| # Линт всех ролей
 | ||
| make role lint
 | ||
| 
 | ||
| # Линт конкретной роли
 | ||
| make role lint docker
 | ||
| 
 | ||
| # Линт с подробным выводом
 | ||
| ansible-lint roles/docker/ -vv
 | ||
| ```
 | ||
| 
 | ||
| ### Диагностика тестов
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка preset'ов
 | ||
| make presets list
 | ||
| make presets info PRESET=default
 | ||
| 
 | ||
| # Проверка контейнеров
 | ||
| docker ps -a --filter "network=labnet"
 | ||
| docker network inspect labnet
 | ||
| 
 | ||
| # Просмотр логов
 | ||
| docker logs -f $(docker ps -aq --filter "network=labnet" | head -1)
 | ||
| ```
 | ||
| 
 | ||
| ### Очистка
 | ||
| 
 | ||
| ```bash
 | ||
| # Очистка контейнеров Molecule
 | ||
| make clean-containers
 | ||
| 
 | ||
| # Очистка образов
 | ||
| make docker clean
 | ||
| 
 | ||
| # Полная очистка
 | ||
| make docker purge
 | ||
| ```
 | ||
| 
 | ||
| ## Полезные команды
 | ||
| 
 | ||
| ### Просмотр информации
 | ||
| 
 | ||
| ```bash
 | ||
| # Список всех ролей
 | ||
| make role list
 | ||
| 
 | ||
| # Список preset'ов
 | ||
| make presets list
 | ||
| 
 | ||
| # Информация об образах
 | ||
| make docker info
 | ||
| 
 | ||
| # Справка по командам
 | ||
| make help
 | ||
| ```
 | ||
| 
 | ||
| ### Docker операции
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка builder'а
 | ||
| make docker check-builder
 | ||
| 
 | ||
| # Диагностика buildx
 | ||
| make docker diagnose
 | ||
| 
 | ||
| # Настройка builder'а
 | ||
| make docker setup-builder
 | ||
| 
 | ||
| # Пересборка образов
 | ||
| make docker rebuild
 | ||
| ```
 | ||
| 
 | ||
| ### Vault операции
 | ||
| 
 | ||
| ```bash
 | ||
| # Создание vault
 | ||
| make vault init
 | ||
| 
 | ||
| # Работа с секретами
 | ||
| make vault create
 | ||
| make vault edit
 | ||
| make vault show
 | ||
| 
 | ||
| # Проверка vault
 | ||
| make vault check
 | ||
| ```
 | ||
| 
 | ||
| ## Заключение
 | ||
| 
 | ||
| Эти примеры демонстрируют основные возможности DevOpsLab:
 | ||
| 
 | ||
| 1. **Быстрое тестирование** с minimal preset
 | ||
| 2. **Универсальная роль devops** для настройки пользователей и SSH
 | ||
| 3. **COD preset** для тестирования российских и зарубежных ОС (ARM64)
 | ||
| 4. **Полное тестирование** с all-images preset
 | ||
| 5. **Создание ролей** через интерактивные команды
 | ||
| 6. **Работа с Vault** для секретов
 | ||
| 7. **Диагностика** и отладка тестов
 | ||
| 8. **Интеграция CI/CD** для автоматизации
 | ||
| 
 | ||
| Для получения дополнительной информации:
 | ||
| - Используйте `make help` для списка команд
 | ||
| - Читайте документацию в `docs/` директории
 | ||
| - Изучайте примеры в `roles/docker/`
 | ||
| 
 | ||
| ---
 | ||
| 
 | ||
| **Автор:** Сергей Антропов  
 | ||
| **Сайт:** https://devops.org.ru
 | ||
| 
 |