- 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
3.7 KiB
Технологический стек
Control Plane
| Компонент | Роль | Declared / resolved evidence |
|---|---|---|
| Nix | Воспроизводимый dev shell | flake.nix, locked nixpkgs revision в flake.lock |
| Python | Ansible controller runtime | pkgs.python3 в flake.nix; точная версия зависит от lock |
| ansible-core | Inventory, playbooks, roles | >=2.19 в requirements.txt; locked Nix package на момент аудита 2.21.3 |
| proxmoxer | Proxmox API client | >=2.3; locked Nix package на момент аудита 2.3.0 |
| requests | HTTP dependency | >=2.31; точная Nix version определяется flake.lock |
| ansible.posix | POSIX modules | >=2.0.0; installed version не закреплена |
| community.proxmox | Proxmox modules | >=2.0.0; installed version не закреплена |
| community.general | Общие modules | >=10.0.0; installed version не закреплена |
| ansible-lint | Static validation | Nix package; CI отдельно pin 25.8.2 |
| yamllint | YAML validation | Nix package; CI отдельно pin 1.37.1 |
Nix shell также содержит Git, jq, OpenSSH, curl и GNU Make. Galaxy collections не
устанавливаются автоматически и живут в ignored ansible/collections/.
Managed Runtime
- Proxmox VE/LXC и PBS являются внешними runtime systems; их версии не заданы manifest.
- Debian LXC templates и Docker/systemd используются service playbooks.
- Caddy, OpenVPN и restic устанавливаются/используются на managed hosts; точные runtime versions репозиторий не фиксирует.
- Active update-managed container images обычно закреплены
tag@sha256:digestвansible/inventory/group_vars/all/services.ymlи service playbooks. - Исключения: frozen Prometheus images закреплены только тегами, а
docker-testиспользует smoke image без declared digest.
Grimmory MCP
| Компонент | Version | Evidence |
|---|---|---|
| Node.js | >=22 |
tools/grimmory-mcp/package.json |
@modelcontextprotocol/sdk |
1.30.0 |
package manifest и lockfile |
| Zod | 3.25.76 |
package manifest и lockfile |
| Grimmory API compatibility | deployed v3.2.4 |
service registry и compatibility code |
Node.js/npm не входят в flake.nix; их нужно предоставлять отдельно.
Setup
nix develop
ansible-galaxy collection install \
-r ansible/requirements.yml \
-p ansible/collections
make -C ansible help
make -C ansible setup остается venv fallback, но Nix является предпочтительным
контроллерным окружением.
Validation
make -C ansible inventory
make -C ansible docs
make -C ansible lint
nix develop -c sh -c \
'cd ansible && for f in playbooks/*.yml; do ansible-playbook --syntax-check "$f"; done'
npm test --prefix tools/grimmory-mcp
make check, make status, make backup-audit и make openvpn-check обращаются к
живой инфраструктуре и не являются локальными unit tests. Документационное изменение
не требует их запуска.
CI
.gitea/workflows/lint.yml описывает yamllint, ansible-lint и syntax-check всех
playbooks. Комментарии в самом workflow фиксируют, что Gitea Actions отключены и
runner не зарегистрирован; автоматического gate сейчас нет. MCP tests в workflow
не включены.