- docs/ai/: stable, repo-verified context - README, architecture, tech-stack, edge-cases, plan (confirmed active work only), migration-tofu (the blue-green OpenTofu migration runbook and per-service findings), legacy-warning, links. - AGENTS.md: slimmed to a working contract that points at docs/ai instead of restating it; CLAUDE.md is an adapter that @-includes it. - README.md, ansible/README.md, ansible/roles/README.md, roles/lxc_docker_host/README.md: bring wording in line with the current control plane (Makefile entry point, registry, tofu, memoir-bot gone). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
59 lines
3.5 KiB
Markdown
59 lines
3.5 KiB
Markdown
# Роли Ansible
|
||
|
||
| Роль | Назначение |
|
||
|---|---|
|
||
| `backup_audit` | Аудит бэкапов PBS и restic, метрики в node-exporter |
|
||
| `bash_config` | Единый bash-конфиг для shell-хостов |
|
||
| `compose_service` | **(новая)** Docker Compose стек под systemd oneshot-юнитом |
|
||
| `emergency_access` | Аварийный доступ |
|
||
| `emergency_bot` | Telegram-бот аварийного доступа |
|
||
| `gyro` | Сервис gyro в изолированном LXC |
|
||
| `lxc_docker_host` | **(новая)** Подготовка непривилегированного LXC под Docker |
|
||
| `monitoring_blackbox` | Внешние HTTP-пробы с ru-vps |
|
||
| `monitoring_exporter` | node-exporter / smartctl-exporter |
|
||
| `monitoring_server` | Prometheus + Alertmanager + Grafana |
|
||
| `openvpn_gateway` | OpenVPN сервер/клиент |
|
||
| `pve_lxc` | Создание LXC через Proxmox API |
|
||
| `uptime_kuma` | Uptime Kuma |
|
||
| `base`, `docker`, `ufw` | Пустые каталоги, оставшиеся от ранней структуры |
|
||
|
||
## Новые роли
|
||
|
||
### `lxc_docker_host`
|
||
|
||
Пакеты, проверка `/dev/fuse`, `daemon.json` со `storage-driver:
|
||
fuse-overlayfs`, запуск docker, базовые правила UFW (SSH из LAN и OpenVPN,
|
||
node-exporter 9100 с 192.168.1.30, `deny incoming`), проверка эффективного
|
||
драйвера хранилища. Вынесено из восьми `pve-*.yml` — около 350 строк
|
||
копипасты. Подробности и пример: [`lxc_docker_host/README.md`](lxc_docker_host/README.md).
|
||
|
||
### `compose_service`
|
||
|
||
`compose.yml` + `.env` (генерация секретов один раз, `no_log`, `0600`) +
|
||
systemd-юнит `Type=oneshot` с `docker compose up -d --remove-orphans`,
|
||
`daemon-reload` через handler, валидация `docker compose config --quiet`,
|
||
рестарт только при изменениях, health-check по URL с `retries`/`until`.
|
||
Подробности и пример плейбука Gitea на новых ролях:
|
||
[`compose_service/README.md`](compose_service/README.md).
|
||
|
||
**Статус:** `compose_service` подключён в `playbooks/ru-vps-base.yml` (стек
|
||
Caddy на ru-vps) — это его первый и пока единственный потребитель.
|
||
`lxc_docker_host` не подключён нигде. Перевод `pve-*.yml` на обе роли —
|
||
отдельный этап.
|
||
|
||
## Источник данных
|
||
|
||
Факты о сервисах (vmid, узел, адрес, порты, домен, образы с digest, ресурсы,
|
||
бэкап, мониторинг, порядок автозапуска) собраны в реестре
|
||
`ansible/inventory/group_vars/all/services.yml` (`homelab_services`).
|
||
Программные потребители реестра:
|
||
|
||
- `playbooks/reverse-proxy.yml` — сборка Caddyfile;
|
||
- `playbooks/ru-vps-base.yml` — стек Caddy и его закреплённый образ;
|
||
- `playbooks/pve-backup-jobs.yml` — списки VMID заданий PBS (поле `backup.job`);
|
||
- `roles/backup_audit` — VMID для аудита (флаг `monitoring.backup_audit_vmid`);
|
||
- `playbooks/validate.yml` — сверка реестра с фактическим состоянием Proxmox.
|
||
|
||
Остальное (`pve-*.yml`, `status.yml`, monitoring, SSH config) по-прежнему
|
||
дублирует значения и должно меняться согласованно.
|