docs: полностью переписана документация в docs/
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
- Обновлены все файлы под актуальные команды Makefile - Исправлены устаревшие команды (preset-list, container-info и т.д.) - Добавлена версия 2.0.0 во все файлы - examples.md полностью переписан с актуальными примерами - creating-roles.md обновлен с правильными командами - Удалены устаревшие примеры и команды Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
# Создание и разработка ролей для AnsibleLab
|
# Создание и разработка ролей для AnsibleLab
|
||||||
|
|
||||||
**Автор:** Сергей Антропов
|
**Автор:** Сергей Антропов
|
||||||
**Сайт:** https://devops.org.ru
|
**Сайт:** https://devops.org.ru
|
||||||
|
**Версия:** 2.0.0
|
||||||
|
|
||||||
## 🚀 Быстрый старт
|
## 🚀 Быстрый старт
|
||||||
|
|
||||||
@@ -56,6 +57,7 @@ roles/my-role/
|
|||||||
```bash
|
```bash
|
||||||
# Интерактивное создание роли
|
# Интерактивное создание роли
|
||||||
make role create
|
make role create
|
||||||
|
# Введите имя роли: my-role
|
||||||
|
|
||||||
# Система автоматически:
|
# Система автоматически:
|
||||||
# - Создаст структуру папок
|
# - Создаст структуру папок
|
||||||
@@ -75,6 +77,8 @@ touch roles/my-role/{tasks,handlers,meta}/main.yml
|
|||||||
touch roles/my-role/defaults/main.yml
|
touch roles/my-role/defaults/main.yml
|
||||||
touch roles/my-role/vars/main.yml
|
touch roles/my-role/vars/main.yml
|
||||||
touch roles/my-role/README.md
|
touch roles/my-role/README.md
|
||||||
|
|
||||||
|
# Добавление роли в roles/deploy.yml вручную
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📝 Разработка роли
|
## 📝 Разработка роли
|
||||||
@@ -532,78 +536,3 @@ MIT
|
|||||||
## Автор
|
## Автор
|
||||||
|
|
||||||
Сергей Антропов - https://devops.org.ru
|
Сергей Антропов - https://devops.org.ru
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Полный цикл разработки
|
|
||||||
|
|
||||||
### 1. Создание роли
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Создание структуры
|
|
||||||
mkdir -p roles/my-role/{tasks,handlers,templates,files,vars,defaults,meta}
|
|
||||||
touch roles/my-role/{tasks,handlers,meta}/main.yml
|
|
||||||
touch roles/my-role/defaults/main.yml
|
|
||||||
touch roles/my-role/vars/main.yml
|
|
||||||
touch roles/my-role/README.md
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Разработка
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Редактирование файлов роли
|
|
||||||
nano roles/my-role/tasks/main.yml
|
|
||||||
nano roles/my-role/defaults/main.yml
|
|
||||||
# ... остальные файлы
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Тестирование
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Lint проверка
|
|
||||||
make role lint
|
|
||||||
|
|
||||||
# Тестирование в Docker
|
|
||||||
make role test minimal
|
|
||||||
|
|
||||||
# Тестирование с custom preset
|
|
||||||
make role test my-custom-preset
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Развертывание
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Тестирование на реальных серверах
|
|
||||||
make role deploy
|
|
||||||
|
|
||||||
# Развертывание на продакшн
|
|
||||||
make role deploy
|
|
||||||
# Подтвердить развертывание: y
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔧 Лучшие практики
|
|
||||||
|
|
||||||
### 1. Структура кода
|
|
||||||
|
|
||||||
- **Используйте теги** для группировки задач
|
|
||||||
- **Добавляйте условия** для условного выполнения
|
|
||||||
- **Используйте обработчики** для перезапуска сервисов
|
|
||||||
- **Документируйте переменные** в defaults/main.yml
|
|
||||||
|
|
||||||
### 2. Безопасность
|
|
||||||
|
|
||||||
- **Используйте vault** для секретов
|
|
||||||
- **Проверяйте права** пользователей
|
|
||||||
- **Настраивайте файрвол** при необходимости
|
|
||||||
- **Используйте SSL** для защищенных соединений
|
|
||||||
|
|
||||||
### 3. Производительность
|
|
||||||
|
|
||||||
- **Используйте кеширование** для повторных операций
|
|
||||||
- **Оптимизируйте пакеты** для уменьшения размера
|
|
||||||
- **Используйте параллельное выполнение** где возможно
|
|
||||||
- **Мониторьте ресурсы** системы
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Автор:** Сергей Антропов
|
|
||||||
**Сайт:** https://devops.org.ru
|
|
||||||
|
|||||||
652
docs/examples.md
652
docs/examples.md
@@ -1,425 +1,325 @@
|
|||||||
# Примеры использования универсальной системы тестирования
|
# Примеры использования AnsibleLab
|
||||||
|
|
||||||
## Пример 1: Тестирование кластера etcd + PostgreSQL + Patroni
|
**Автор:** Сергей Антропов
|
||||||
|
**Сайт:** https://devops.org.ru
|
||||||
|
**Версия:** 2.0.0
|
||||||
|
|
||||||
### Описание
|
## Быстрый старт
|
||||||
Этот пример демонстрирует тестирование высокодоступного кластера PostgreSQL с Patroni и etcd.
|
|
||||||
|
|
||||||
### Preset: etcd-patroni
|
### Базовое тестирование роли
|
||||||
|
|
||||||
```yaml
|
|
||||||
# molecule/presets/etcd-patroni.yml
|
|
||||||
hosts:
|
|
||||||
# ETCD кластер (5 узлов для высокой доступности)
|
|
||||||
- name: etcd1
|
|
||||||
family: debian
|
|
||||||
groups: [etcd, cluster]
|
|
||||||
- name: etcd2
|
|
||||||
family: rhel
|
|
||||||
groups: [etcd, cluster]
|
|
||||||
- name: etcd3
|
|
||||||
family: debian
|
|
||||||
groups: [etcd, cluster]
|
|
||||||
- name: etcd4
|
|
||||||
family: rhel
|
|
||||||
groups: [etcd, cluster]
|
|
||||||
- name: etcd5
|
|
||||||
family: debian
|
|
||||||
groups: [etcd, cluster]
|
|
||||||
|
|
||||||
# Patroni кластер (3 узла PostgreSQL)
|
|
||||||
- name: patroni1
|
|
||||||
family: rhel
|
|
||||||
groups: [patroni, database, cluster]
|
|
||||||
- name: patroni2
|
|
||||||
family: debian
|
|
||||||
groups: [patroni, database, cluster]
|
|
||||||
- name: patroni3
|
|
||||||
family: rhel
|
|
||||||
groups: [patroni, database, cluster]
|
|
||||||
|
|
||||||
# HAProxy для балансировки
|
|
||||||
- name: haproxy
|
|
||||||
family: debian
|
|
||||||
groups: [haproxy, loadbalancer]
|
|
||||||
publish: ["5000:5000", "5001:5001"] # RW и RO порты
|
|
||||||
|
|
||||||
# DinD узел для тестирования Docker Compose внутри
|
|
||||||
- name: app-dind
|
|
||||||
type: dind
|
|
||||||
groups: [apps, docker]
|
|
||||||
publish: ["8080:8080"]
|
|
||||||
```
|
|
||||||
|
|
||||||
### Запуск тестирования
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Информация о preset'е
|
# Тестирование роли ping с minimal preset (1 хост)
|
||||||
make preset-info PRESET=etcd-patroni
|
make role test minimal
|
||||||
|
|
||||||
# Тестирование с preset'ом
|
# Тестирование роли docker с default preset (2 хоста)
|
||||||
make preset-test PRESET=etcd-patroni
|
make role lint docker
|
||||||
|
make role test docker
|
||||||
|
```
|
||||||
|
|
||||||
# Или через role test
|
### Просмотр доступных preset'ов
|
||||||
make role test etcd-patroni
|
|
||||||
|
```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
|
```bash
|
||||||
# Проверить статус контейнеров
|
# Просмотр созданных контейнеров
|
||||||
make container-info
|
docker ps -a --filter "network=labnet"
|
||||||
|
|
||||||
# Проверить vault файлы
|
# Просмотр логов контейнера
|
||||||
make vault-check
|
docker logs $(docker ps -aq --filter "network=labnet" | head -1)
|
||||||
|
|
||||||
|
# Вход в контейнер для проверки
|
||||||
|
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash
|
||||||
```
|
```
|
||||||
|
|
||||||
## Пример 2: Нагрузочное тестирование
|
## Пример 2: Создание собственной роли
|
||||||
|
|
||||||
### Описание
|
### Создание роли
|
||||||
Этот пример демонстрирует тестирование под нагрузкой с множественными серверами и кэшем.
|
|
||||||
|
|
||||||
### Preset: performance
|
```bash
|
||||||
|
# Интерактивное создание новой роли
|
||||||
|
make role create
|
||||||
|
# Введите имя роли: nginx
|
||||||
|
|
||||||
|
# Редактирование роли
|
||||||
|
cd roles/nginx
|
||||||
|
nano tasks/main.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Разработка роли
|
||||||
|
|
||||||
|
**`roles/nginx/tasks/main.yml`:**
|
||||||
```yaml
|
```yaml
|
||||||
# molecule/presets/performance.yml
|
|
||||||
hosts:
|
|
||||||
# Основные серверы (5 узлов)
|
|
||||||
- name: server1
|
|
||||||
family: debian
|
|
||||||
groups: [servers, web, app]
|
|
||||||
- name: server2
|
|
||||||
family: rhel
|
|
||||||
groups: [servers, web, app]
|
|
||||||
- name: server3
|
|
||||||
family: debian
|
|
||||||
groups: [servers, web, app]
|
|
||||||
- name: server4
|
|
||||||
family: rhel
|
|
||||||
groups: [servers, web, app]
|
|
||||||
- name: server5
|
|
||||||
family: debian
|
|
||||||
groups: [servers, web, app]
|
|
||||||
|
|
||||||
# База данных (3 узла)
|
|
||||||
- name: db1
|
|
||||||
family: rhel
|
|
||||||
groups: [database, db]
|
|
||||||
- name: db2
|
|
||||||
family: debian
|
|
||||||
groups: [database, db]
|
|
||||||
- name: db3
|
|
||||||
family: rhel
|
|
||||||
groups: [database, db]
|
|
||||||
|
|
||||||
# Кэш (3 узла Redis)
|
|
||||||
- name: cache1
|
|
||||||
family: debian
|
|
||||||
groups: [cache, redis]
|
|
||||||
- name: cache2
|
|
||||||
family: rhel
|
|
||||||
groups: [cache, redis]
|
|
||||||
- name: cache3
|
|
||||||
family: debian
|
|
||||||
groups: [cache, redis]
|
|
||||||
|
|
||||||
# Load balancer
|
|
||||||
- name: lb1
|
|
||||||
family: rhel
|
|
||||||
groups: [loadbalancer, haproxy]
|
|
||||||
publish: ["80:80", "443:443"]
|
|
||||||
|
|
||||||
# DinD узел для тестирования Docker Compose
|
|
||||||
- name: compose-dind
|
|
||||||
type: dind
|
|
||||||
groups: [apps, docker]
|
|
||||||
publish: ["8080:8080", "8081:8081"]
|
|
||||||
```
|
|
||||||
|
|
||||||
### Запуск тестирования
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Тестирование с performance preset'ом
|
|
||||||
make role test performance
|
|
||||||
|
|
||||||
# Проверка статуса
|
|
||||||
make container-info
|
|
||||||
```
|
|
||||||
|
|
||||||
## Пример 3: Тестирование безопасности
|
|
||||||
|
|
||||||
### Описание
|
|
||||||
Этот пример демонстрирует тестирование в безопасной среде с bastion хостами и изоляцией.
|
|
||||||
|
|
||||||
### Preset: security
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# molecule/presets/security.yml
|
|
||||||
hosts:
|
|
||||||
# Bastion хосты (точки входа)
|
|
||||||
- name: bastion1
|
|
||||||
family: rhel
|
|
||||||
groups: [bastion, security, jump]
|
|
||||||
publish: ["2222:22"]
|
|
||||||
- name: bastion2
|
|
||||||
family: debian
|
|
||||||
groups: [bastion, security, jump]
|
|
||||||
publish: ["2223:22"]
|
|
||||||
|
|
||||||
# Внутренние серверы (без внешнего доступа)
|
|
||||||
- name: internal1
|
|
||||||
family: rhel
|
|
||||||
groups: [internal, servers, app]
|
|
||||||
- name: internal2
|
|
||||||
family: debian
|
|
||||||
groups: [internal, servers, app]
|
|
||||||
- name: internal3
|
|
||||||
family: rhel
|
|
||||||
groups: [internal, servers, app]
|
|
||||||
|
|
||||||
# База данных (изолированная сеть)
|
|
||||||
- name: db-secure1
|
|
||||||
family: rhel
|
|
||||||
groups: [database, secure, internal]
|
|
||||||
- name: db-secure2
|
|
||||||
family: debian
|
|
||||||
groups: [database, secure, internal]
|
|
||||||
|
|
||||||
# Мониторинг и логирование
|
|
||||||
- name: monitor1
|
|
||||||
family: debian
|
|
||||||
groups: [monitoring, security, logs]
|
|
||||||
- name: monitor2
|
|
||||||
family: rhel
|
|
||||||
groups: [monitoring, security, logs]
|
|
||||||
|
|
||||||
# Firewall и сетевые компоненты
|
|
||||||
- name: fw1
|
|
||||||
family: rhel
|
|
||||||
groups: [firewall, network, security]
|
|
||||||
- name: fw2
|
|
||||||
family: debian
|
|
||||||
groups: [firewall, network, security]
|
|
||||||
|
|
||||||
# DOoD узел для тестирования Docker безопасности
|
|
||||||
- name: docker-secure
|
|
||||||
type: dood
|
|
||||||
family: debian
|
|
||||||
groups: [docker, security, apps]
|
|
||||||
publish: ["8080:8080"]
|
|
||||||
env:
|
|
||||||
DOCKER_HOST: "unix:///var/run/docker.sock"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Запуск тестирования
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Тестирование с security preset'ом
|
|
||||||
make role test security
|
|
||||||
|
|
||||||
# Проверка безопасности
|
|
||||||
make vault-check
|
|
||||||
make vault-scan
|
|
||||||
```
|
|
||||||
|
|
||||||
## Пример 4: Тестирование на разных ОС
|
|
||||||
|
|
||||||
### Описание
|
|
||||||
Этот пример демонстрирует тестирование на различных операционных системах.
|
|
||||||
|
|
||||||
### Preset: multi-os
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# molecule/presets/multi-os.yml
|
|
||||||
hosts:
|
|
||||||
# Debian/Ubuntu серверы
|
|
||||||
- name: ubuntu1
|
|
||||||
family: ubuntu
|
|
||||||
groups: [ubuntu, servers, web]
|
|
||||||
- name: debian1
|
|
||||||
family: debian
|
|
||||||
groups: [debian, servers, web]
|
|
||||||
- name: ubuntu2
|
|
||||||
family: ubuntu
|
|
||||||
groups: [ubuntu, servers, app]
|
|
||||||
- name: debian2
|
|
||||||
family: debian
|
|
||||||
groups: [debian, servers, app]
|
|
||||||
|
|
||||||
# RHEL/CentOS серверы
|
|
||||||
- name: rhel1
|
|
||||||
family: rhel
|
|
||||||
groups: [rhel, servers, web]
|
|
||||||
- name: centos1
|
|
||||||
family: centos
|
|
||||||
groups: [centos, servers, web]
|
|
||||||
- name: rhel2
|
|
||||||
family: rhel
|
|
||||||
groups: [rhel, servers, app]
|
|
||||||
- name: centos2
|
|
||||||
family: centos
|
|
||||||
groups: [centos, servers, app]
|
|
||||||
|
|
||||||
# База данных на разных ОС
|
|
||||||
- name: db-ubuntu
|
|
||||||
family: ubuntu
|
|
||||||
groups: [database, ubuntu, db]
|
|
||||||
- name: db-rhel
|
|
||||||
family: rhel
|
|
||||||
groups: [database, rhel, db]
|
|
||||||
|
|
||||||
# Load balancer
|
|
||||||
- name: lb-mixed
|
|
||||||
family: debian
|
|
||||||
groups: [loadbalancer, haproxy]
|
|
||||||
publish: ["80:80", "443:443"]
|
|
||||||
|
|
||||||
# DinD узел для тестирования Docker
|
|
||||||
- name: docker-mixed
|
|
||||||
type: dind
|
|
||||||
groups: [docker, apps]
|
|
||||||
publish: ["8080:8080"]
|
|
||||||
```
|
|
||||||
|
|
||||||
### Запуск тестирования
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Тестирование с multi-os preset'ом
|
|
||||||
make role test multi-os
|
|
||||||
|
|
||||||
# Проверка типов контейнеров
|
|
||||||
make container-types
|
|
||||||
```
|
|
||||||
|
|
||||||
## Пример 5: Создание собственного preset'а
|
|
||||||
|
|
||||||
### Описание
|
|
||||||
Этот пример демонстрирует создание собственного preset'а для специфических нужд.
|
|
||||||
|
|
||||||
### Создание preset'а
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Создать новый preset
|
|
||||||
cat > molecule/presets/my-custom.yml << 'EOF'
|
|
||||||
---
|
---
|
||||||
# Пресет для тестирования веб-приложения
|
- name: Установка nginx
|
||||||
# Автор: Ваше имя
|
package:
|
||||||
# Сайт: https://your-site.com
|
name: nginx
|
||||||
|
state: present
|
||||||
|
when: ansible_os_family in ['Debian', 'RedHat']
|
||||||
|
|
||||||
docker_network: labnet
|
- name: Запуск nginx
|
||||||
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
|
systemd:
|
||||||
|
name: nginx
|
||||||
# systemd-ready образы
|
state: started
|
||||||
images:
|
enabled: yes
|
||||||
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
|
|
||||||
rhel: "quay.io/centos/centos:stream9-systemd"
|
|
||||||
|
|
||||||
systemd_defaults:
|
|
||||||
privileged: true
|
|
||||||
command: "/sbin/init"
|
|
||||||
volumes:
|
|
||||||
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
|
|
||||||
tmpfs: ["/run", "/run/lock"]
|
|
||||||
capabilities: ["SYS_ADMIN"]
|
|
||||||
|
|
||||||
# Описание кластера
|
|
||||||
hosts:
|
|
||||||
# Веб-серверы
|
|
||||||
- name: web1
|
|
||||||
family: debian
|
|
||||||
groups: [web, servers]
|
|
||||||
publish: ["80:80", "443:443"]
|
|
||||||
- name: web2
|
|
||||||
family: rhel
|
|
||||||
groups: [web, servers]
|
|
||||||
publish: ["8080:80", "8443:443"]
|
|
||||||
|
|
||||||
# База данных
|
|
||||||
- name: db1
|
|
||||||
family: rhel
|
|
||||||
groups: [database, db]
|
|
||||||
- name: db2
|
|
||||||
family: debian
|
|
||||||
groups: [database, db]
|
|
||||||
|
|
||||||
# Кэш
|
|
||||||
- name: cache1
|
|
||||||
family: debian
|
|
||||||
groups: [cache, redis]
|
|
||||||
|
|
||||||
# DinD узел для тестирования
|
|
||||||
- name: app-dind
|
|
||||||
type: dind
|
|
||||||
groups: [apps, docker]
|
|
||||||
publish: ["8080:8080"]
|
|
||||||
EOF
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Использование preset'а
|
### Тестирование роли
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Информация о preset'е
|
# Lint проверка
|
||||||
make preset-info PRESET=my-custom
|
make role lint nginx
|
||||||
|
|
||||||
# Тестирование с preset'ом
|
# Тестирование с minimal preset
|
||||||
make preset-test PRESET=my-custom
|
make role test minimal
|
||||||
|
|
||||||
# Или через role test
|
# Проверка работы nginx
|
||||||
make role test my-custom
|
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) systemctl status nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
## Пример 6: Работа с Ansible Vault
|
## Пример 3: Использование preset'ов
|
||||||
|
|
||||||
### Создание vault файла
|
### Minimal preset (1 хост)
|
||||||
|
|
||||||
```bash
|
```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
|
make vault create
|
||||||
|
# Имя файла: secrets
|
||||||
# Ввести имя файла: secrets
|
|
||||||
# Ввести содержимое:
|
|
||||||
# ---
|
|
||||||
# database_password: "super_secret_password"
|
|
||||||
# api_key: "your_api_key_here"
|
|
||||||
# ssl_cert: "your_ssl_certificate"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Использование в ролях
|
### Редактирование секретов
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Редактирование
|
||||||
|
make vault edit
|
||||||
|
# Имя файла: secrets
|
||||||
|
|
||||||
|
# Просмотр секретов
|
||||||
|
make vault show
|
||||||
|
# Имя файла: secrets
|
||||||
|
```
|
||||||
|
|
||||||
|
### Использование в тестировании
|
||||||
|
|
||||||
|
Секреты автоматически расшифровываются при запуске тестов и шифруются обратно после завершения.
|
||||||
|
|
||||||
|
## Пример 5: CI/CD интеграция
|
||||||
|
|
||||||
|
### GitHub Actions
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# roles/my-role/tasks/main.yml
|
name: Ansible Tests
|
||||||
- name: Configure database
|
on: [push, pull_request]
|
||||||
template:
|
|
||||||
src: database.conf.j2
|
jobs:
|
||||||
dest: /etc/database.conf
|
test:
|
||||||
vars:
|
runs-on: ubuntu-latest
|
||||||
db_password: "{{ database_password }}"
|
steps:
|
||||||
api_key: "{{ api_key }}"
|
- 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
|
```bash
|
||||||
# Проверить vault файлы
|
# Линт всех ролей
|
||||||
make vault-check
|
make role lint
|
||||||
|
|
||||||
# Найти потенциальные секреты
|
# Линт конкретной роли
|
||||||
make vault-scan
|
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
|
||||||
```
|
```
|
||||||
|
|
||||||
## Заключение
|
## Заключение
|
||||||
|
|
||||||
Эти примеры демонстрируют различные способы использования универсальной системы тестирования Ansible ролей. Вы можете:
|
Эти примеры демонстрируют основные возможности AnsibleLab:
|
||||||
|
|
||||||
1. Использовать готовые preset'ы для быстрого тестирования
|
1. **Быстрое тестирование** с minimal preset
|
||||||
2. Создавать собственные preset'ы для специфических нужд
|
2. **Полное тестирование** с all-images preset
|
||||||
3. Комбинировать различные типы контейнеров
|
3. **Создание ролей** через интерактивные команды
|
||||||
4. Использовать Ansible Vault для безопасности
|
4. **Работа с Vault** для секретов
|
||||||
5. Тестировать на различных операционных системах
|
5. **Диагностика** и отладка тестов
|
||||||
|
6. **Интеграция CI/CD** для автоматизации
|
||||||
|
|
||||||
Для получения дополнительной информации используйте:
|
Для получения дополнительной информации:
|
||||||
- `make help` - общая справка
|
- Используйте `make help` для списка команд
|
||||||
- `make preset-list` - список preset'ов
|
- Читайте документацию в `docs/` директории
|
||||||
- `make container-types` - типы контейнеров
|
- Изучайте примеры в `roles/docker/`
|
||||||
- `make vault` - команды Vault
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Автор:** Сергей Антропов
|
||||||
|
**Сайт:** https://devops.org.ru
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user