- 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
71 lines
3.1 KiB
Markdown
71 lines
3.1 KiB
Markdown
# HomeLab Infrastructure
|
||
|
||
Активная инфраструктура домашней лаборатории управляется через Ansible.
|
||
Каноничные инструкции для людей и агентов — в [AGENTS.md](./AGENTS.md).
|
||
Стабильный архитектурный контекст и риски — в [docs/ai/](./docs/ai/README.md).
|
||
|
||
## Быстрый старт
|
||
|
||
Окружение собрано в Nix, venv не нужен:
|
||
|
||
```bash
|
||
nix develop # или один раз: direnv allow
|
||
|
||
# Один раз на клон
|
||
ansible-galaxy collection install -r ansible/requirements.yml -p ansible/collections
|
||
```
|
||
|
||
Всё управление — через `make` из `ansible/`:
|
||
|
||
```bash
|
||
cd ansible
|
||
make help # список целей, начинать отсюда
|
||
make check # связность и ожидаемые IP
|
||
make status # read-only сводка по всей инфраструктуре
|
||
make lint # ansible-lint + yamllint
|
||
```
|
||
|
||
Деплой и обновления:
|
||
|
||
```bash
|
||
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_config`
|
||
- `ansible/inventory/group_vars/all/services.yml` — реестр сервисов (VMID, IP, порты, домены, образы)
|
||
- `flake.nix` — dev-окружение
|
||
- `.gitea/workflows/lint.yml` — CI: yamllint, ansible-lint, syntax-check
|
||
- `docs/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.
|
||
|
||
```bash
|
||
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`.
|