Files
DevOpsLab/docs/examples.md
Сергей Антропов 1b6db7445d docs: Обновление документации и исправление RHEL образа
- Обновлен 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 архитектуре
2025-10-27 20:27:45 +03:00

382 lines
9.3 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.

# Примеры использования 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