pve-emergency-bot.yml, pve-monitoring.yml and pve-docker-test.yml still ran their creation plays unconditionally. Invoking make deploy-<svc> would pct start / pct reboot the stopped OLD VMID (148/146/145) on its production IP, colliding with the live tofu-managed container. Add the same pre_tasks `meta: end_play` guard the other seven migrated services already carry: skip while homelab_services['<svc>'].provisioner == 'tofu', override with -e pve_<svc>_legacy_provisioning_enabled=true for an intentional legacy rollback. Verified with --check: both plays in each file end immediately, no pct calls. Config for these three lives elsewhere (emergency-access.yml, uptime-kuma.yml, pve-docker-test.yml play 2), so gating the creation plays makes the files full no-ops under tofu, like pve-gyro.yml. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
HomeLab Infrastructure
Активная инфраструктура домашней лаборатории управляется через Ansible. Каноничные инструкции для людей и агентов — в AGENTS.md. Стабильный архитектурный контекст и риски — в docs/ai/.
Быстрый старт
Окружение собрано в Nix, venv не нужен:
nix develop # или один раз: direnv allow
# Один раз на клон
ansible-galaxy collection install -r ansible/requirements.yml -p ansible/collections
Всё управление — через make из ansible/:
cd ansible
make help # список целей, начинать отсюда
make check # связность и ожидаемые IP
make status # read-only сводка по всей инфраструктуре
make lint # ansible-lint + yamllint
Деплой и обновления:
make dry-gitea # предпросмотр (--check --diff)
make deploy-gitea # применить
make update-gitea # бэкап -> обновление -> health-check
Секреты лежат в .env в корне репозитория (в .gitignore); его подхватывают
и Ansible, и OpenTofu. Опасные цели требуют CONFIRM=1.
SSH руками
ansible/ssh_config — единый источник правды по SSH и для Ansible, и для терминала.
Добавь в ~/.ssh/config, чтобы заработал ssh gitea:
Include /home/ada/Documents/Projects/HomeLab/infras/ansible/ssh_config
Структура
ansible/— control plane:Makefile,inventory/,playbooks/,roles/,ssh_configansible/inventory/group_vars/all/services.yml— реестр сервисов (VMID, IP, порты, домены, образы)flake.nix— dev-окружение.gitea/workflows/lint.yml— CI: yamllint, ansible-lint, syntax-checkdocs/ai/— архитектура, stack, edge cases и legacy boundaries для агентовarchive/2026-07-proxmox-migration/— исторические NixOS/Docker конфиги, только как справка
Grimmory MCP
tools/grimmory-mcp/ содержит read-only интеграцию с Grimmory API для OpenCode.
Явно вызываемые sync tools записывают сгенерированные заметки и обложки в Obsidian.
npm install --prefix tools/grimmory-mcp
npm run configure --prefix tools/grimmory-mcp
npm test --prefix tools/grimmory-mcp
Глобальная регистрация MCP в OpenCode выполняется вне этого репозитория. После
настройки используй /grimmory-sync для обновления заметок книг в
90 Library/Books и обложек в 99 System/Export/Grimmory/Covers.