# ============================================================================ # Сервис №5: monitoring (OLD vmid 146, cloud-pc). # Эталон снят 2026-09-02: ssh cloud-pc sudo pct config 146 (совпадает с # cat /etc/pve/lxc/146.conf дословно). # # vm_id 155 — новый VMID для blue-green переезда, TMPIP 192.168.1.14 # используется только на шаге 4.3 (проверка перед cutover). После шага 4.5.15 # адрес — боевой 192.168.1.30 (тот же, что и у OLD: в этой схеме переезжает # VMID, а не IP), OLD (146) остановлен и остаётся откатом минимум неделю. # # Активный сервис — Uptime Kuma: SQLite в /opt/uptime-kuma/data/kuma.db, # UI-состояние (мониторы, уведомления) в Ansible не описано, каталог # переносится целиком на шаге 4.4. Стек Prometheus + Alertmanager + Grafana # в этом контейнере ЗАМОРОЖЕН (docs/ai/legacy-warning.md) — его данные лежат # отдельно в /opt/monitoring (в основном TSDB Prometheus) и в новый контейнер # намеренно НЕ переносятся; решение о судьбе замороженного стека отдельное, # не часть этого переезда. # # ОСОБЕННОСТЬ features: реестр (services.yml) отмечает, что роль создаёт # контейнер с nesting=1, а keyctl=1 добавляет отдельной задачей `pct set 146 # --features nesting=1,keyctl=1` уже после создания (playbooks/pve-monitoring.yml). # Здесь воспроизведён ЭТАЛОН как он есть на живом контейнере — оба флага сразу, # декларативно, без промежуточного шага: в привилегированном режиме root@pam # (см. tofu/README.md, «Решение: root@pam по паролю») дошаг `pct set` для этого # и остальных сервисов больше не нужен, features применяются одной фазой. # ============================================================================ resource "proxmox_virtual_environment_container" "monitoring" { node_name = "cloud-pc" vm_id = 155 unprivileged = true start_on_boot = true started = true tags = ["tofu"] initialization { hostname = "monitoring" ip_config { ipv4 { address = "192.168.1.30/24" gateway = "192.168.1.1" } } dns { servers = ["1.1.1.1"] } user_account { keys = [trimspace(file(pathexpand("~/.ssh/id_ed25519_homelab.pub")))] } } operating_system { template_file_id = "local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst" type = "debian" } cpu { cores = 2 } memory { dedicated = 4096 swap = 512 } disk { datastore_id = "data" size = 24 } # Эталон: features: nesting=1,keyctl=1 — см. ОСОБЕННОСТЬ в комментарии выше. # Ни fuse, ни device passthrough эталону не нужны (dev0 в pct config нет). features { nesting = true keyctl = true } # roles/pve_lxc всем контейнерам ставит cmode=shell (pve_lxc_cmode), провайдер # это отслеживает через блок console.type — без него на следующем apply # откатит на дефолт Proxmox tty. Обнаружено 2026-09-02 на emergency-bot, # см. tofu/README.md. console { type = "shell" } network_interface { name = "eth0" bridge = "vmbr0" firewall = true } startup { order = 80 } } output "monitoring" { description = "Что проверять на узле после apply" value = { vmid = proxmox_virtual_environment_container.monitoring.vm_id node = proxmox_virtual_environment_container.monitoring.node_name verify = "ssh cloud-pc sudo pct config ${proxmox_virtual_environment_container.monitoring.vm_id}" } }