docs: Добавлена полная документация по кастомизации deploy.yml
- Создан файл docs/deploy-yml-customization.md с полным руководством - Добавлены примеры использования become, групп, переменных, тегов - Показаны примеры условного выполнения и параллелизма - Добавлены примеры обработки ошибок и безопасности - Включены примеры использования Vault и отладки - Добавлены лучшие практики и рекомендации - Обновлен roles/deploy.yml с примерами кастомизации - Добавлены ссылки на документацию в Makefile и README.md Документация включает: - 15 разделов с подробными примерами - Команды запуска с различными параметрами - Примеры продакшн развертывания - Настройки безопасности и мониторинга - Обработка ошибок и логирование
This commit is contained in:
9
Makefile
9
Makefile
@@ -127,6 +127,12 @@ role:
|
|||||||
echo ""; \
|
echo ""; \
|
||||||
echo " 🚀 make role deploy - развернуть роли на реальные серверы"; \
|
echo " 🚀 make role deploy - развернуть роли на реальные серверы"; \
|
||||||
echo " 💡 Требует: inventory/hosts.ini"; \
|
echo " 💡 Требует: inventory/hosts.ini"; \
|
||||||
|
echo " 💡 Примеры:"; \
|
||||||
|
echo " make role deploy # развертывание всех ролей"; \
|
||||||
|
echo " ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags web"; \
|
||||||
|
echo " ansible-playbook -i inventory/hosts.ini roles/deploy.yml --limit webservers"; \
|
||||||
|
echo " ansible-playbook -i inventory/hosts.ini roles/deploy.yml --check"; \
|
||||||
|
echo " 💡 Документация: docs/deploy-yml-customization.md"; \
|
||||||
echo ""; \
|
echo ""; \
|
||||||
echo " 🔍 make role lint - проверить синтаксис ролей"; \
|
echo " 🔍 make role lint - проверить синтаксис ролей"; \
|
||||||
echo " 💡 Использует: ansible-lint"; \
|
echo " 💡 Использует: ansible-lint"; \
|
||||||
@@ -937,6 +943,9 @@ help:
|
|||||||
@echo " make role create - создать новую роль (интерактивно)"
|
@echo " make role create - создать новую роль (интерактивно)"
|
||||||
@echo " make role delete - удалить роль (интерактивно)"
|
@echo " make role delete - удалить роль (интерактивно)"
|
||||||
@echo ""
|
@echo ""
|
||||||
|
@echo "📖 ДОКУМЕНТАЦИЯ ПО DEPLOY.YML:"
|
||||||
|
@echo " docs/deploy-yml-customization.md - полное руководство по кастомизации"
|
||||||
|
@echo ""
|
||||||
@echo "📋 PRESET'Ы (тестовые окружения):"
|
@echo "📋 PRESET'Ы (тестовые окружения):"
|
||||||
@echo " make presets list - показать все доступные preset'ы"
|
@echo " make presets list - показать все доступные preset'ы"
|
||||||
@echo " make presets info - подробная информация о preset'е"
|
@echo " make presets info - подробная информация о preset'е"
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ AnsibleTemplate - это универсальная система для тес
|
|||||||
- **[docs/site-yml-guide.md](docs/site-yml-guide.md)** - Руководство по файлу site.yml
|
- **[docs/site-yml-guide.md](docs/site-yml-guide.md)** - Руководство по файлу site.yml
|
||||||
- **[docs/molecule-guide.md](docs/molecule-guide.md)** - Подробное руководство по Molecule
|
- **[docs/molecule-guide.md](docs/molecule-guide.md)** - Подробное руководство по Molecule
|
||||||
- **[docs/all-images-preset.md](docs/all-images-preset.md)** - Пресет all-images для тестирования всех образов
|
- **[docs/all-images-preset.md](docs/all-images-preset.md)** - Пресет all-images для тестирования всех образов
|
||||||
|
- **[docs/deploy-yml-customization.md](docs/deploy-yml-customization.md)** - Полное руководство по кастомизации deploy.yml
|
||||||
- **[dockerfiles/README.md](dockerfiles/README.md)** - Подробная документация по Docker образам
|
- **[dockerfiles/README.md](dockerfiles/README.md)** - Подробная документация по Docker образам
|
||||||
|
|
||||||
### 🏗️ CI/CD
|
### 🏗️ CI/CD
|
||||||
|
|||||||
520
docs/deploy-yml-customization.md
Normal file
520
docs/deploy-yml-customization.md
Normal file
@@ -0,0 +1,520 @@
|
|||||||
|
# Кастомизация deploy.yml - Полное руководство
|
||||||
|
|
||||||
|
## Описание
|
||||||
|
|
||||||
|
Файл `roles/deploy.yml` - это основной playbook для развертывания Ansible ролей на продакшн серверах. Этот документ содержит полную сводку по кастомизации и настройке различных сценариев развертывания.
|
||||||
|
|
||||||
|
## Базовый пример
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
# Playbook для развертывания на продакшн серверах
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
- name: Развертывание всех ролей
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- ping
|
||||||
|
```
|
||||||
|
|
||||||
|
## 1. Управление привилегиями (become)
|
||||||
|
|
||||||
|
### Базовое использование become
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с sudo правами
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Become с паролем
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с sudo паролем
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
become_method: sudo
|
||||||
|
become_user: root
|
||||||
|
vars:
|
||||||
|
ansible_become_pass: "{{ vault_sudo_password }}"
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### Become для конкретных ролей
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с разными привилегиями
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
become: true
|
||||||
|
- role: app-config
|
||||||
|
become: false
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. Группировка хостов
|
||||||
|
|
||||||
|
### Развертывание по группам
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание на веб-серверах
|
||||||
|
hosts: webservers
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
|
- name: Развертывание на БД серверах
|
||||||
|
hosts: databases
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- postgresql
|
||||||
|
- redis
|
||||||
|
|
||||||
|
- name: Развертывание на мониторинг серверах
|
||||||
|
hosts: monitoring
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- prometheus
|
||||||
|
- grafana
|
||||||
|
```
|
||||||
|
|
||||||
|
### Условное развертывание
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание на production
|
||||||
|
hosts: production
|
||||||
|
become: true
|
||||||
|
when: environment == "production"
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- ssl-certificates
|
||||||
|
|
||||||
|
- name: Развертывание на staging
|
||||||
|
hosts: staging
|
||||||
|
become: false
|
||||||
|
when: environment == "staging"
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. Переменные и конфигурация
|
||||||
|
|
||||||
|
### Глобальные переменные
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с переменными
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
vars:
|
||||||
|
nginx_port: 80
|
||||||
|
nginx_ssl_port: 443
|
||||||
|
app_name: "my-application"
|
||||||
|
app_version: "1.0.0"
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- application
|
||||||
|
```
|
||||||
|
|
||||||
|
### Переменные для конкретных ролей
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с ролевыми переменными
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
vars:
|
||||||
|
nginx_port: 80
|
||||||
|
nginx_ssl_enabled: true
|
||||||
|
- role: postgresql
|
||||||
|
vars:
|
||||||
|
postgresql_version: "13"
|
||||||
|
postgresql_max_connections: 200
|
||||||
|
```
|
||||||
|
|
||||||
|
### Использование group_vars и host_vars
|
||||||
|
```yaml
|
||||||
|
# group_vars/webservers.yml
|
||||||
|
nginx_worker_processes: 4
|
||||||
|
nginx_worker_connections: 1024
|
||||||
|
|
||||||
|
# group_vars/databases.yml
|
||||||
|
postgresql_shared_buffers: "256MB"
|
||||||
|
postgresql_effective_cache_size: "1GB"
|
||||||
|
|
||||||
|
# В deploy.yml
|
||||||
|
- name: Развертывание с групповыми переменными
|
||||||
|
hosts: webservers:databases
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Теги (Tags)
|
||||||
|
|
||||||
|
### Базовое использование тегов
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с тегами
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
tags: ['web', 'nginx']
|
||||||
|
- role: postgresql
|
||||||
|
tags: ['database', 'postgresql']
|
||||||
|
- role: monitoring
|
||||||
|
tags: ['monitoring', 'prometheus']
|
||||||
|
```
|
||||||
|
|
||||||
|
### Запуск с тегами
|
||||||
|
```bash
|
||||||
|
# Развертывание только веб-серверов
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags web
|
||||||
|
|
||||||
|
# Развертывание только БД
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags database
|
||||||
|
|
||||||
|
# Развертывание веб + БД
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags web,database
|
||||||
|
|
||||||
|
# Пропустить мониторинг
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --skip-tags monitoring
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. Обработчики (Handlers)
|
||||||
|
|
||||||
|
### Использование обработчиков
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с обработчиками
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
handlers:
|
||||||
|
- name: restart nginx
|
||||||
|
service:
|
||||||
|
name: nginx
|
||||||
|
state: restarted
|
||||||
|
listen: "restart nginx"
|
||||||
|
|
||||||
|
- name: restart postgresql
|
||||||
|
service:
|
||||||
|
name: postgresql
|
||||||
|
state: restarted
|
||||||
|
listen: "restart postgresql"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. Условное выполнение
|
||||||
|
|
||||||
|
### Условия на основе переменных
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с условиями
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
when: nginx_enabled | default(true)
|
||||||
|
- role: postgresql
|
||||||
|
when: database_enabled | default(true)
|
||||||
|
- role: redis
|
||||||
|
when: cache_enabled | default(false)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Условия на основе групп
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с групповыми условиями
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
when: "'webservers' in group_names"
|
||||||
|
- role: postgresql
|
||||||
|
when: "'databases' in group_names"
|
||||||
|
- role: monitoring
|
||||||
|
when: "'monitoring' in group_names"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 7. Параллельное выполнение
|
||||||
|
|
||||||
|
### Настройка параллелизма
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с параллелизмом
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
serial: 2 # Выполнять на 2 хостах одновременно
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Каскадное развертывание
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание БД (первыми)
|
||||||
|
hosts: databases
|
||||||
|
become: true
|
||||||
|
serial: 1
|
||||||
|
roles:
|
||||||
|
- postgresql
|
||||||
|
|
||||||
|
- name: Развертывание приложений (после БД)
|
||||||
|
hosts: webservers
|
||||||
|
become: true
|
||||||
|
serial: 2
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- application
|
||||||
|
```
|
||||||
|
|
||||||
|
## 8. Обработка ошибок
|
||||||
|
|
||||||
|
### Игнорирование ошибок
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с игнорированием ошибок
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
ignore_errors: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Обработка ошибок на уровне ролей
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с обработкой ошибок
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
ignore_errors: true
|
||||||
|
- role: postgresql
|
||||||
|
ignore_errors: false
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. Инвентарь и подключение
|
||||||
|
|
||||||
|
### Различные пользователи
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с разными пользователями
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
remote_user: "{{ ansible_user | default('ubuntu') }}"
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSH настройки
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с SSH настройками
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
gather_facts: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
vars:
|
||||||
|
ansible_ssh_private_key_file: "~/.ssh/id_rsa"
|
||||||
|
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 10. Полный пример продакшн развертывания
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
# Полный пример продакшн развертывания
|
||||||
|
# Автор: Сергей Антропов
|
||||||
|
# Сайт: https://devops.org.ru
|
||||||
|
|
||||||
|
# 1. Развертывание инфраструктуры
|
||||||
|
- name: Развертывание инфраструктуры
|
||||||
|
hosts: infrastructure
|
||||||
|
become: true
|
||||||
|
serial: 1
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
vars:
|
||||||
|
nginx_ssl_enabled: true
|
||||||
|
nginx_ssl_cert: "{{ ssl_cert_path }}"
|
||||||
|
nginx_ssl_key: "{{ ssl_key_path }}"
|
||||||
|
tags: ['infrastructure', 'nginx']
|
||||||
|
|
||||||
|
# 2. Развертывание БД
|
||||||
|
- name: Развертывание базы данных
|
||||||
|
hosts: databases
|
||||||
|
become: true
|
||||||
|
serial: 1
|
||||||
|
roles:
|
||||||
|
- role: postgresql
|
||||||
|
vars:
|
||||||
|
postgresql_version: "13"
|
||||||
|
postgresql_max_connections: 200
|
||||||
|
postgresql_shared_buffers: "256MB"
|
||||||
|
tags: ['database', 'postgresql']
|
||||||
|
|
||||||
|
# 3. Развертывание приложений
|
||||||
|
- name: Развертывание приложений
|
||||||
|
hosts: webservers
|
||||||
|
become: true
|
||||||
|
serial: 2
|
||||||
|
roles:
|
||||||
|
- role: nginx
|
||||||
|
vars:
|
||||||
|
nginx_upstream_servers: "{{ app_servers }}"
|
||||||
|
tags: ['application', 'nginx']
|
||||||
|
- role: application
|
||||||
|
vars:
|
||||||
|
app_version: "{{ app_version }}"
|
||||||
|
app_environment: "{{ environment }}"
|
||||||
|
tags: ['application']
|
||||||
|
|
||||||
|
# 4. Развертывание мониторинга
|
||||||
|
- name: Развертывание мониторинга
|
||||||
|
hosts: monitoring
|
||||||
|
become: true
|
||||||
|
when: monitoring_enabled | default(true)
|
||||||
|
roles:
|
||||||
|
- role: prometheus
|
||||||
|
tags: ['monitoring', 'prometheus']
|
||||||
|
- role: grafana
|
||||||
|
tags: ['monitoring', 'grafana']
|
||||||
|
```
|
||||||
|
|
||||||
|
## 11. Команды запуска
|
||||||
|
|
||||||
|
### Базовые команды
|
||||||
|
```bash
|
||||||
|
# Развертывание всех ролей
|
||||||
|
make role deploy
|
||||||
|
|
||||||
|
# Развертывание с проверкой (dry-run)
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --check
|
||||||
|
|
||||||
|
# Развертывание с тегами
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags web,database
|
||||||
|
|
||||||
|
# Развертывание с переменными
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml -e "app_version=1.0.0"
|
||||||
|
|
||||||
|
# Развертывание с лимитом хостов
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --limit webservers
|
||||||
|
```
|
||||||
|
|
||||||
|
### Продвинутые команды
|
||||||
|
```bash
|
||||||
|
# Развертывание с параллелизмом
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --forks 5
|
||||||
|
|
||||||
|
# Развертывание с детальным выводом
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml -vvv
|
||||||
|
|
||||||
|
# Развертывание с обработкой ошибок
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --force-handlers
|
||||||
|
|
||||||
|
# Развертывание с тестированием
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --check --diff
|
||||||
|
```
|
||||||
|
|
||||||
|
## 12. Переменные окружения
|
||||||
|
|
||||||
|
### Использование переменных окружения
|
||||||
|
```bash
|
||||||
|
# Установка переменных окружения
|
||||||
|
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||||
|
export ANSIBLE_SSH_RETRIES=3
|
||||||
|
export ANSIBLE_TIMEOUT=30
|
||||||
|
|
||||||
|
# Развертывание
|
||||||
|
make role deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
### Файл переменных
|
||||||
|
```yaml
|
||||||
|
# group_vars/all.yml
|
||||||
|
ansible_user: ubuntu
|
||||||
|
ansible_ssh_private_key_file: "~/.ssh/id_rsa"
|
||||||
|
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
|
||||||
|
|
||||||
|
# Переменные приложения
|
||||||
|
app_name: "my-application"
|
||||||
|
app_version: "1.0.0"
|
||||||
|
environment: "production"
|
||||||
|
|
||||||
|
# Переменные БД
|
||||||
|
postgresql_version: "13"
|
||||||
|
postgresql_max_connections: 200
|
||||||
|
```
|
||||||
|
|
||||||
|
## 13. Безопасность
|
||||||
|
|
||||||
|
### Использование Vault
|
||||||
|
```yaml
|
||||||
|
# В deploy.yml
|
||||||
|
- name: Развертывание с секретами
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
vars:
|
||||||
|
db_password: "{{ vault_db_password }}"
|
||||||
|
ssl_cert: "{{ vault_ssl_cert }}"
|
||||||
|
roles:
|
||||||
|
- postgresql
|
||||||
|
- nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### Запуск с Vault
|
||||||
|
```bash
|
||||||
|
# Развертывание с паролем Vault
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --ask-vault-pass
|
||||||
|
|
||||||
|
# Развертывание с файлом пароля
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --vault-password-file .vault_pass
|
||||||
|
```
|
||||||
|
|
||||||
|
## 14. Отладка и логирование
|
||||||
|
|
||||||
|
### Включение отладки
|
||||||
|
```yaml
|
||||||
|
- name: Развертывание с отладкой
|
||||||
|
hosts: all
|
||||||
|
become: true
|
||||||
|
debug: true
|
||||||
|
roles:
|
||||||
|
- nginx
|
||||||
|
- postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Логирование
|
||||||
|
```bash
|
||||||
|
# Развертывание с логированием
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --log-path /var/log/ansible.log
|
||||||
|
|
||||||
|
# Развертывание с детальным выводом
|
||||||
|
ansible-playbook -i inventory/hosts.ini roles/deploy.yml -vvv
|
||||||
|
```
|
||||||
|
|
||||||
|
## 15. Лучшие практики
|
||||||
|
|
||||||
|
### Структура файла
|
||||||
|
1. **Комментарии** - описывайте каждый блок
|
||||||
|
2. **Группировка** - логически группируйте роли
|
||||||
|
3. **Переменные** - выносите переменные в отдельные файлы
|
||||||
|
4. **Теги** - используйте теги для гибкости
|
||||||
|
5. **Условия** - добавляйте условия для безопасности
|
||||||
|
|
||||||
|
### Рекомендации
|
||||||
|
- Используйте `become: true` для системных ролей
|
||||||
|
- Группируйте хосты по функциональности
|
||||||
|
- Применяйте теги для модульности
|
||||||
|
- Используйте переменные для конфигурации
|
||||||
|
- Добавляйте условия для безопасности
|
||||||
|
- Логируйте все операции
|
||||||
|
- Тестируйте с `--check` перед развертыванием
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
|
||||||
|
Файл `roles/deploy.yml` - это центральный элемент развертывания. Правильная его настройка обеспечивает гибкость, безопасность и надежность развертывания Ansible ролей на продакшн серверах.
|
||||||
|
|
||||||
|
Для получения дополнительной информации см.:
|
||||||
|
- [Создание ролей](creating-roles.md)
|
||||||
|
- [Настройка CI/CD](cicd-setup.md)
|
||||||
|
- [Мониторинг](monitoring.md)
|
||||||
@@ -2,8 +2,70 @@
|
|||||||
# Playbook для развертывания на продакшн серверах
|
# Playbook для развертывания на продакшн серверах
|
||||||
# Автор: Сергей Антропов
|
# Автор: Сергей Антропов
|
||||||
# Сайт: https://devops.org.ru
|
# Сайт: https://devops.org.ru
|
||||||
|
#
|
||||||
|
# 📖 Полное руководство по кастомизации: docs/deploy-yml-customization.md
|
||||||
|
#
|
||||||
|
# Примеры использования:
|
||||||
|
# - make role deploy # Развертывание всех ролей
|
||||||
|
# - ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags web
|
||||||
|
# - ansible-playbook -i inventory/hosts.ini roles/deploy.yml --limit webservers
|
||||||
|
# - ansible-playbook -i inventory/hosts.ini roles/deploy.yml --check
|
||||||
|
|
||||||
|
# Базовое развертывание всех ролей
|
||||||
- name: Развертывание всех ролей
|
- name: Развертывание всех ролей
|
||||||
hosts: all
|
hosts: all
|
||||||
|
become: true
|
||||||
roles:
|
roles:
|
||||||
- ping
|
- ping
|
||||||
|
|
||||||
|
# Примеры расширенной кастомизации (раскомментируйте при необходимости):
|
||||||
|
#
|
||||||
|
# # Развертывание по группам с разными настройками
|
||||||
|
# - name: Развертывание на веб-серверах
|
||||||
|
# hosts: webservers
|
||||||
|
# become: true
|
||||||
|
# roles:
|
||||||
|
# - nginx
|
||||||
|
# - php-fpm
|
||||||
|
# tags: ['web', 'nginx']
|
||||||
|
#
|
||||||
|
# - name: Развертывание на БД серверах
|
||||||
|
# hosts: databases
|
||||||
|
# become: true
|
||||||
|
# roles:
|
||||||
|
# - postgresql
|
||||||
|
# - redis
|
||||||
|
# tags: ['database']
|
||||||
|
#
|
||||||
|
# - name: Развертывание на мониторинг серверах
|
||||||
|
# hosts: monitoring
|
||||||
|
# become: true
|
||||||
|
# when: monitoring_enabled | default(true)
|
||||||
|
# roles:
|
||||||
|
# - prometheus
|
||||||
|
# - grafana
|
||||||
|
# tags: ['monitoring']
|
||||||
|
#
|
||||||
|
# # Развертывание с переменными
|
||||||
|
# - name: Развертывание с переменными
|
||||||
|
# hosts: all
|
||||||
|
# become: true
|
||||||
|
# vars:
|
||||||
|
# nginx_port: 80
|
||||||
|
# nginx_ssl_enabled: true
|
||||||
|
# app_version: "1.0.0"
|
||||||
|
# roles:
|
||||||
|
# - nginx
|
||||||
|
# - application
|
||||||
|
#
|
||||||
|
# # Развертывание с условиями
|
||||||
|
# - name: Развертывание с условиями
|
||||||
|
# hosts: all
|
||||||
|
# become: true
|
||||||
|
# roles:
|
||||||
|
# - role: nginx
|
||||||
|
# when: nginx_enabled | default(true)
|
||||||
|
# - role: postgresql
|
||||||
|
# when: database_enabled | default(true)
|
||||||
|
# - role: redis
|
||||||
|
# when: cache_enabled | default(false)
|
||||||
|
|||||||
Reference in New Issue
Block a user