- Обновлен 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 архитектуре
9.3 KiB
9.3 KiB
Примеры использования DevOpsLab
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
Быстрый старт
Базовое тестирование роли
# Тестирование роли ping с minimal preset (1 хост)
make role test minimal
# Тестирование роли docker с default preset (2 хоста)
make role lint docker
make role test docker
Просмотр доступных preset'ов
# Список всех preset'ов
make presets list
# Информация о конкретном preset'е
make presets info PRESET=default
make presets info PRESET=all-images
Пример 1: Тестирование роли Docker
Описание
Тестирование универсальной роли Docker на разных ОС.
# 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
Проверка результатов
# Просмотр созданных контейнеров
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
# Тестирование с 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
Использование в других ролях
# В вашем 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: Создание собственной роли
Создание роли
# Интерактивное создание новой роли
make role create
# Введите имя роли: nginx
# Редактирование роли
cd roles/nginx
nano tasks/main.yml
Разработка роли
roles/nginx/tasks/main.yml:
---
- name: Установка nginx
package:
name: nginx
state: present
when: ansible_os_family in ['Debian', 'RedHat']
- name: Запуск nginx
systemd:
name: nginx
state: started
enabled: yes
Тестирование роли
# 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 хост)
# Быстрое тестирование на 1 хосте
make role test minimal
# Проверка контейнера
docker ps -a --filter "network=labnet"
Default preset (2 хоста)
# Тестирование на Ubuntu + Debian
make role test default
# Проверка нескольких контейнеров
docker ps -a --filter "network=labnet"
COD preset (6 хостов) - ARM64
# Тестирование на 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 хостов)
# Полное тестирование всех ОС
make role test all-images
# Проверка всех контейнеров
docker ps -a --filter "network=labnet" --format "table {{.Names}}\t{{.Status}}"
Preset'ы по ОС
# Тестирование на всех версиях Ubuntu
make role test ubuntu-all
# Тестирование на всех версиях Debian
make role test debian-all
# Тестирование на всех версиях CentOS
make role test centos-all
Пример 5: Работа с Ansible Vault
Создание секретов
# Инициализация vault
make vault init
# Создание нового файла секретов
make vault create
# Имя файла: secrets
Редактирование секретов
# Редактирование
make vault edit
# Имя файла: secrets
# Просмотр секретов
make vault show
# Имя файла: secrets
Использование в тестировании
Секреты автоматически расшифровываются при запуске тестов и шифруются обратно после завершения.
Пример 6: CI/CD интеграция
GitHub Actions
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
test:
script:
- make role lint
- make role test minimal
only:
- merge_requests
- main
Пример 7: Диагностика и отладка
Проверка линтинга
# Линт всех ролей
make role lint
# Линт конкретной роли
make role lint docker
# Линт с подробным выводом
ansible-lint roles/docker/ -vv
Диагностика тестов
# Проверка 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)
Очистка
# Очистка контейнеров Molecule
make clean-containers
# Очистка образов
make docker clean
# Полная очистка
make docker purge
Полезные команды
Просмотр информации
# Список всех ролей
make role list
# Список preset'ов
make presets list
# Информация об образах
make docker info
# Справка по командам
make help
Docker операции
# Проверка builder'а
make docker check-builder
# Диагностика buildx
make docker diagnose
# Настройка builder'а
make docker setup-builder
# Пересборка образов
make docker rebuild
Vault операции
# Создание vault
make vault init
# Работа с секретами
make vault create
make vault edit
make vault show
# Проверка vault
make vault check
Заключение
Эти примеры демонстрируют основные возможности DevOpsLab:
- Быстрое тестирование с minimal preset
- Универсальная роль devops для настройки пользователей и SSH
- COD preset для тестирования российских и зарубежных ОС (ARM64)
- Полное тестирование с all-images preset
- Создание ролей через интерактивные команды
- Работа с Vault для секретов
- Диагностика и отладка тестов
- Интеграция CI/CD для автоматизации
Для получения дополнительной информации:
- Используйте
make helpдля списка команд - Читайте документацию в
docs/директории - Изучайте примеры в
roles/docker/
Автор: Сергей Антропов
Сайт: https://devops.org.ru