- Заменено название проекта во всех файлах проекта - Обновлены: * README.md * Makefile * Все файлы документации (.md) * CI/CD конфигурации (Jenkins, GitLab, GitHub Actions, Azure DevOps) * Скрипты (setup-cicd.sh, test-custom-images.sh) * Файлы конфигурации Molecule - Изменена переменная PROJECT_NAME в Makefile на devops-lab - Docker образы inecs/ansible-lab:* оставлены без изменений (чтобы не затрагивать существующие образы в Docker Hub)
326 lines
7.2 KiB
Markdown
326 lines
7.2 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: Создание собственной роли
|
||
|
||
### Создание роли
|
||
|
||
```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
|
||
```
|
||
|
||
## Пример 3: Использование 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"
|
||
```
|
||
|
||
### 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
|
||
```
|
||
|
||
## Пример 4: Работа с Ansible Vault
|
||
|
||
### Создание секретов
|
||
|
||
```bash
|
||
# Инициализация vault
|
||
make vault init
|
||
|
||
# Создание нового файла секретов
|
||
make vault create
|
||
# Имя файла: secrets
|
||
```
|
||
|
||
### Редактирование секретов
|
||
|
||
```bash
|
||
# Редактирование
|
||
make vault edit
|
||
# Имя файла: secrets
|
||
|
||
# Просмотр секретов
|
||
make vault show
|
||
# Имя файла: secrets
|
||
```
|
||
|
||
### Использование в тестировании
|
||
|
||
Секреты автоматически расшифровываются при запуске тестов и шифруются обратно после завершения.
|
||
|
||
## Пример 5: 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
|
||
```
|
||
|
||
## Пример 6: Диагностика и отладка
|
||
|
||
### Проверка линтинга
|
||
|
||
```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. **Полное тестирование** с all-images preset
|
||
3. **Создание ролей** через интерактивные команды
|
||
4. **Работа с Vault** для секретов
|
||
5. **Диагностика** и отладка тестов
|
||
6. **Интеграция CI/CD** для автоматизации
|
||
|
||
Для получения дополнительной информации:
|
||
- Используйте `make help` для списка команд
|
||
- Читайте документацию в `docs/` директории
|
||
- Изучайте примеры в `roles/docker/`
|
||
|
||
---
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru
|
||
|