feat: Создана роль deploy для управления инфраструктурой
- Создана полноценная роль deploy в roles/deploy/ - Перенесена логика развертывания из site.yml в роль - Обновлен site.yml для использования роли deploy - Добавлена поддержка условного развертывания по группам Структура роли deploy: - tasks/main.yml - основные задачи - tasks/etcd.yml - развертывание ETCD - tasks/patroni.yml - развертывание Patroni - tasks/haproxy.yml - развертывание HAProxy - tasks/apps.yml - развертывание приложений - tasks/dind-stack.yml - развертывание DinD стека - templates/haproxy.cfg.j2 - конфигурация HAProxy - templates/docker-compose.yml.j2 - конфигурация DinD стека - handlers/main.yml - обработчики сервисов - defaults/main.yml - переменные по умолчанию - vars/main.yml - переменные роли - meta/main.yml - метаданные роли - README.md - документация роли Обновления в site.yml: - Упрощен до базовой установки common tools - Добавлена роль deploy с условным развертыванием - Поддержка развертывания по группам (etcd, patroni, haproxy, apps) Новые команды: - make role info NAME=deploy - информация о роли - make role deploy - развертывание ролей с inventory Преимущества: - Модульная архитектура с разделением ответственности - Условное развертывание по группам хостов - Переиспользуемые компоненты (ETCD, Patroni, HAProxy) - Шаблоны для конфигурации сервисов - Обработчики для перезапуска сервисов - Подробная документация роли Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
@@ -35,66 +35,15 @@
|
||||
- unzip
|
||||
state: present
|
||||
|
||||
# Под каждую группу — свои роли. Подставь свои имена.
|
||||
- name: ETCD
|
||||
hosts: etcd
|
||||
# Развертывание инфраструктуры через роль deploy
|
||||
- name: Deploy infrastructure
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
# - role: your_role_etcd
|
||||
tasks:
|
||||
- name: ETCD placeholder
|
||||
debug:
|
||||
msg: "ETCD группа готова для настройки"
|
||||
|
||||
- name: Patroni
|
||||
hosts: patroni
|
||||
become: true
|
||||
roles:
|
||||
# - role: your_role_patroni
|
||||
tasks:
|
||||
- name: Patroni placeholder
|
||||
debug:
|
||||
msg: "Patroni группа готова для настройки"
|
||||
|
||||
- name: HAProxy
|
||||
hosts: haproxy
|
||||
become: true
|
||||
roles:
|
||||
# - role: your_role_haproxy
|
||||
tasks:
|
||||
- name: HAProxy placeholder
|
||||
debug:
|
||||
msg: "HAProxy группа готова для настройки"
|
||||
|
||||
# Пример: развернуть docker-compose прямо внутри DinD хоста(ов)
|
||||
- name: DinD stack deploy
|
||||
hosts: apps
|
||||
gather_facts: false
|
||||
vars:
|
||||
docker_host: "tcp://{{ inventory_hostname }}:2375"
|
||||
stack_dir: /root/stack
|
||||
tasks:
|
||||
- name: Create stack directory
|
||||
file:
|
||||
path: "{{ stack_dir }}"
|
||||
state: directory
|
||||
|
||||
- name: Copy demo docker-compose.yml
|
||||
copy:
|
||||
dest: "{{ stack_dir }}/docker-compose.yml"
|
||||
content: |
|
||||
version: "3.9"
|
||||
services:
|
||||
web:
|
||||
image: nginx:alpine
|
||||
ports: ["8080:80"]
|
||||
cache:
|
||||
image: redis:7-alpine
|
||||
|
||||
- name: Deploy stack on DinD
|
||||
community.docker.docker_compose_v2:
|
||||
project_src: "{{ stack_dir }}"
|
||||
state: present
|
||||
docker_host: "{{ docker_host }}"
|
||||
when: item.type is defined and item.type == 'dind'
|
||||
loop: "{{ groups['apps'] | map('extract', hostvars) | list }}"
|
||||
- role: deploy
|
||||
vars:
|
||||
deploy_enabled: true
|
||||
etcd_enabled: "{{ 'etcd' in group_names }}"
|
||||
patroni_enabled: "{{ 'patroni' in group_names }}"
|
||||
haproxy_enabled: "{{ 'haproxy' in group_names }}"
|
||||
apps_enabled: "{{ 'apps' in group_names }}"
|
||||
|
||||
Reference in New Issue
Block a user