mirror of
https://scm.tikali.ai/tikali/applications/monky/monky-deployd.git
synced 2026-09-18 04:36:15 +00:00
6336012b74
The GitLab project is private (its parent groups are private, so it cannot be made public): the v0.1.1 one-liner answered 401 anonymously. install.sh gains --token / MONKY_DEPLOYD_TOKEN and sends `DEPLOY-TOKEN: <token>` (a GitLab deploy token, scope read_package_registry only, revocable) on every registry download, the script itself included; the token goes through a 0600 curl -K file (never the command line, the log or an xtrace). The grant is taken via --bootstrap-file when the script is piped (stdin IS the script). Ansible: monky_deployd_download_token (vaulted) -> DEPLOY-TOKEN header, no_log. Docs explain why, the token's scope and the --source gitea alternative (split-horizon Gitea, cbs/iac#102). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KLB7jieMNRkTsJ2epr4Ds1
3.4 KiB
3.4 KiB
Changelog
v0.1.2 — 2026-09-05
- The GitLab project is private (its parent groups are private, so it cannot be made public;
found when the v0.1.1 one-liner returned 401 anonymously).
install.shgains--token <deploy-token>/MONKY_DEPLOYD_TOKEN: every download from the generic package registry — the script itself included — sendsDEPLOY-TOKEN: <token>, a read-only GitLab deploy token (scoperead_package_registryonly, revocable), seeded in OpenBao atmonky/monky-tenancy/deployd-download(keytoken) and handed to the box by the monky-tenancy install kit. The token never reaches the command line, the log or an xtrace (curl-Kconfig file, 0600, deleted after the download;set +xforced). The one-liner now fetchesinstall.shfrom the registry (…/monky-deployd/<ver>/install.sh) instead of-/raw/main, and takes the bootstrap grant via--bootstrap-file— withcurl … | bash -s --stdin IS the script, so it is no longer read for the grant in that mode.--source gitea(no token) stays the off-estate alternative. - Ansible role:
monky_deployd_download_token(vaulted) →DEPLOY-TOKENheader on both fetches,no_log: true. - README / OPERATIONS: why (private project; split-horizon Gitea, cbs/iac#102), token scope, revocation. No agent behaviour change.
v0.1.1 — 2026-09-05
install.sh/ ansible role / README: the primary download is the public GitLab project's generic package registry on scm.tikali.ai (/api/v4/projects/69/packages/generic/monky-deployd/<ver>/…); the one-liner fetches the script fromscm.tikali.ai/…/-/raw/main/packaging/install.sh. Inside the estategitea.cbs.tikali.netis split-horizon to jump1's RED EIP (no HTTP ingress), so backend boxes could not fetch the artefacts (cbs/iac#102). The Gitea release stays the off-estate alternative (--source gitea/MONKY_DEPLOYD_SOURCE=gitea). No agent behaviour change.
v0.1.0 — 2026-09-05
First release (MONKY-ADR-0028 §D, Reconciliation v2, Gate 1 v2).
- Stdlib-only Python 3.12 agent:
run --once|loop,status,bootstrap,--prune. - Protocol:
POST /v1/agent/checkin(action apply|none|down),GET /v1/agent/bundle/{env}/{sha}(sha256 verified),POST /v1/agent/lease→ deploy grant (login_jwt),POST /v1/agent/report(result applied|failed|down, redactedlog_tail). An AppRole-shaped lease is refused (LEASE_SHAPE). - OpenBao:
POST /v1/auth/jwt-tenancy/login {"role":"see-env","jwt":…}; KV-v2 reads pinned to the manifest's versions, paths pinned tomonky/data/<env>/see/; renew-self / re-lease before max TTL. - Refusals:
ENV_INCOMPLETE(names only),PRIVILEGED_REFUSED,ROLLBACK_REFUSED,DISK_INSUFFICIENT(need × 1.5 + 2 GiBvs docker data-root),BUNDLE_SHA_MISMATCH,BUNDLE_ENV_MISMATCH. - Transports
sdk(openziti SDK),proxy(ziti tunnel proxy18443/18200),system. - Exit codes 0 / 75 / 78 (
AGENT_ENV_MISMATCH, no retry storm) / 1; laptop mode (offline exits 0). - Packaging: hardened
monky-deployd.serviceoneshot + 60 s timer,monky-deployd-proxy.service,nfpm.debwith/opt/monky-deployd/venv,packaging/install.sh(Ubuntu 26.04), ansible role skeleton. - Known divergence: monky-tenancy
main(MR !15) still ships the AppRole lease/kit; the JWT-grant follow-up is the tenancy side of this release (docs/PROTOCOL.md "Divergences").