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
83 lines
4.1 KiB
YAML
83 lines
4.1 KiB
YAML
---
|
|
# ============================================================================
|
|
# roles/lxc_docker_host — подготовка непривилегированного LXC под Docker.
|
|
# Все переменные документированы; значения по умолчанию соответствуют тому,
|
|
# что фактически делают playbooks/pve-*.yml.
|
|
# ============================================================================
|
|
|
|
# --- Пакеты ----------------------------------------------------------------
|
|
# Базовый набор, общий для всех Docker-хостов HomeLab.
|
|
lxc_docker_host_packages:
|
|
- ca-certificates
|
|
- curl
|
|
- docker.io
|
|
- fuse-overlayfs
|
|
|
|
# Дополнительные пакеты конкретного сервиса.
|
|
# Примеры из существующих плейбуков:
|
|
# gitea: [sqlite3, rsync]
|
|
# adguard: [dnsutils]
|
|
# mihomo: [git]
|
|
# memoir-bot: [git, openssh-client, rsync]
|
|
# grimmory: [mariadb-client, openssl]
|
|
lxc_docker_host_extra_packages: []
|
|
|
|
# Ставить пакет docker-compose (в pve-grimmory.yml и pve-hermes-ai.yml он есть).
|
|
# Юниты используют плагин `docker compose` из docker.io, поэтому по умолчанию
|
|
# отдельный пакет не нужен.
|
|
lxc_docker_host_install_compose_package: false
|
|
|
|
# Ставить prometheus-node-exporter локально (так делает pve-grimmory.yml).
|
|
# Обычно экспортёром управляет роль monitoring_exporter.
|
|
lxc_docker_host_install_node_exporter: false
|
|
|
|
# Обновлять кеш apt перед установкой.
|
|
lxc_docker_host_update_cache: true
|
|
|
|
# --- FUSE ------------------------------------------------------------------
|
|
# Проверять наличие символьного устройства /dev/fuse и падать, если его нет.
|
|
# Без него fuse-overlayfs не заработает, а Docker молча деградирует.
|
|
lxc_docker_host_require_fuse: true
|
|
lxc_docker_host_fuse_device: /dev/fuse
|
|
|
|
# --- Docker daemon ---------------------------------------------------------
|
|
lxc_docker_host_storage_driver: fuse-overlayfs
|
|
# Итоговое содержимое /etc/docker/daemon.json. Расширяемо: можно передать
|
|
# дополнительные ключи, storage-driver подставляется отсюда.
|
|
lxc_docker_host_daemon_config:
|
|
storage-driver: "{{ lxc_docker_host_storage_driver }}"
|
|
lxc_docker_host_daemon_config_path: /etc/docker/daemon.json
|
|
# Проверить `docker info --format {{.Driver}}` в конце и упасть при расхождении.
|
|
lxc_docker_host_verify_storage_driver: true
|
|
|
|
# --- UFW -------------------------------------------------------------------
|
|
# Управлять ли фаерволом вообще. false — роль не трогает ufw.
|
|
lxc_docker_host_manage_ufw: true
|
|
# Ставить пакет ufw, если управление включено.
|
|
lxc_docker_host_install_ufw: true
|
|
|
|
# Источники, которым разрешён SSH.
|
|
lxc_docker_host_ssh_port: 22
|
|
lxc_docker_host_ssh_sources:
|
|
- "{{ homelab_lan_cidr }}"
|
|
- "{{ openvpn_network_cidr }}"
|
|
|
|
# Node exporter: скрейп разрешён только с хоста мониторинга.
|
|
lxc_docker_host_allow_node_exporter: true
|
|
lxc_docker_host_node_exporter_port: 9100
|
|
lxc_docker_host_monitoring_host: "{{ homelab_monitoring_host_ip | default('192.168.1.30') }}"
|
|
|
|
# Дополнительные порты сервиса. Формат:
|
|
# - port: "6060"
|
|
# proto: tcp # необязательно, по умолчанию tcp
|
|
# comment: "Grimmory" # необязательно
|
|
# sources:
|
|
# - "{{ homelab_lan_cidr }}"
|
|
# - "{{ openvpn_network_cidr }}"
|
|
lxc_docker_host_ufw_service_rules: []
|
|
|
|
# Включить ufw с политикой deny incoming. Правила выше применяются ДО включения,
|
|
# чтобы не потерять SSH.
|
|
lxc_docker_host_ufw_enable: true
|
|
lxc_docker_host_ufw_policy: deny
|