Files
infra/ansible/roles/compose_service/defaults/main.yml
T
DmitryandClaude Opus 5 9725d3ea7c Add service registry, shared roles and unified reverse proxy
Collect the facts about all 14 services -- VMID, node, address, ports,
domain, pinned images, resources, backup and monitoring participation --
into group_vars/all/services.yml. Values are taken from the existing
playbooks; gaps are marked null rather than invented.

Replace reverse-proxy-{gitea,vaultwarden,grimmory}.yml with a single
playbook iterating over registry entries that declare a domain. It keeps
every check the three had, preserves grimmory's richer Caddy block
byte-for-byte, and restarts Caddy once when any site changed instead of
up to three times. Verified with --check --diff against ru-vps: ok=6
changed=0, so it reproduces the current Caddyfile exactly.

Add two roles factoring out the skeleton duplicated across the pve-*
playbooks: lxc_docker_host (packages, /dev/fuse assertion, fuse-overlayfs
storage driver, UFW baseline) and compose_service (compose file, systemd
unit, config validation, health check). They are not wired into any
playbook yet -- migrating a live service is a separate, per-service step;
compose_service/README.md shows the Gitea example and spells out what
actually changes on the host.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 22:10:16 +03:00

71 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# ============================================================================
# roles/compose_service — раскладка Docker Compose стека + systemd-юнита.
# Обобщает то, что делает pve-grimmory.yml (compose.yml, .env с секретами,
# oneshot-юнит, валидация, health-check).
# ============================================================================
# --- Обязательное ----------------------------------------------------------
# Имя сервиса. Оно же имя systemd-юнита (<name>.service) и имя каталога
# по умолчанию. Роль падает с понятным сообщением, если не задано.
compose_service_name: ""
# Содержимое compose.yml. Ровно один из двух способов:
# compose_service_compose_content — готовая строка (можно собрать в vars);
# compose_service_compose_template — путь к Jinja-шаблону в вызывающей роли
# или в playbooks/templates.
compose_service_compose_content: ""
compose_service_compose_template: ""
# --- Раскладка на диске ----------------------------------------------------
compose_service_root: "/opt/{{ compose_service_name }}"
compose_service_root_mode: "0750"
compose_service_owner: root
compose_service_group: root
compose_service_compose_file: compose.yml
compose_service_compose_mode: "0644"
# Дополнительные каталоги данных. Формат:
# - {path: /opt/grimmory/data, owner: "1000", group: "1000", mode: "0750"}
compose_service_directories: []
# --- Файл окружения --------------------------------------------------------
compose_service_env_path: "{{ compose_service_root }}/.env"
compose_service_env_mode: "0600"
# Пары ключ-значение, записываемые в .env как есть.
compose_service_env_static: {}
# Имена переменных, значения которых генерируются `openssl rand -hex` ОДИН РАЗ.
# Файл .env создаётся только если его ещё нет: повторный прогон не перетирает
# уже используемые пароли. Чтобы поменять секрет — удалите .env вручную.
compose_service_env_generated: []
compose_service_env_secret_bytes: 32
# Необязательный .env.example для документирования формата (без секретов!).
compose_service_env_example: ""
compose_service_env_example_mode: "0644"
# --- systemd ---------------------------------------------------------------
compose_service_description: "{{ compose_service_name }} Compose stack"
# Дополнительные юниты в After= / Requires= (docker.service уже включён).
compose_service_after: []
compose_service_requires: []
compose_service_unit_path: "/etc/systemd/system/{{ compose_service_name }}.service"
compose_service_docker_binary: /usr/bin/docker
compose_service_enabled: true
# Дополнительные условия рестарта: список булевых значений от вызывающего
# (например, результат pull образа).
compose_service_restart_triggers: []
# --- Валидация и health-check ---------------------------------------------
# `docker compose config --quiet` перед стартом. Выполняется с no_log,
# потому что вывод при ошибке может содержать значения из .env.
compose_service_validate: true
# URL health-check после старта. Пустая строка — проверка пропускается.
compose_service_health_url: ""
compose_service_health_status: [200]
compose_service_health_retries: 24
compose_service_health_delay: 5
compose_service_health_follow_redirects: safe