lint / yamllint + ansible-lint + syntax-check (push) Canceled after 0s
The host table listed 9 hosts against 16 in the inventory, the role tree did not match roles/, and the documented setup path used a venv that no longer works. Describe the current entry points instead: nix develop, make, and the ssh_config include that makes `ssh gitea` work by hand. Point at `make docs` as the way to regenerate the host table rather than editing it, since that is what drifted. Also record what is deliberately incomplete: lxc_docker_host and compose_service exist but are not wired into any playbook, and LXC creation is still split between direct pct create over SSH and the pve_lxc API role. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
68 lines
2.7 KiB
Markdown
68 lines
2.7 KiB
Markdown
# HomeLab Infrastructure
|
||
|
||
Активная инфраструктура домашней лаборатории управляется через Ansible.
|
||
Каноничные инструкции для людей и агентов — в [AGENTS.md](./AGENTS.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` с Proxmox-токенами подхватывается автоматически. Опасные цели требуют `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
|
||
- `archive/2026-07-proxmox-migration/` — исторические NixOS/Docker конфиги, только как справка
|
||
|
||
## Grimmory MCP
|
||
|
||
`tools/grimmory-mcp/` содержит read-only интеграцию с Grimmory API для OpenCode
|
||
и явно вызываемые инструменты синхронизации с Obsidian.
|
||
|
||
```bash
|
||
npm install --prefix tools/grimmory-mcp
|
||
npm run configure --prefix tools/grimmory-mcp
|
||
npm test --prefix tools/grimmory-mcp
|
||
```
|
||
|
||
OpenCode регистрирует сервер глобально. После перезапуска OpenCode используй
|
||
`/grimmory-sync` для обновления заметок книг в `90 Library/Books` и обложек
|
||
в `99 System/Export/Grimmory/Covers`.
|