docs: AI project context (docs/ai) and repository documentation refresh
- 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
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
5e27ba2513
commit
d2e1e6876a
@@ -0,0 +1,76 @@
|
||||
# Технологический стек
|
||||
|
||||
## 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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
не включены.
|
||||
Reference in New Issue
Block a user