Skip to content

chore(deploy): migrate to the Kamal substrate; remove Nomad/Vault/Packer leftovers#196

Merged
jrosskopf merged 1 commit into
mainfrom
chore/deploy-substrate-migration
Jun 22, 2026
Merged

chore(deploy): migrate to the Kamal substrate; remove Nomad/Vault/Packer leftovers#196
jrosskopf merged 1 commit into
mainfrom
chore/deploy-substrate-migration

Conversation

@jrosskopf

Copy link
Copy Markdown
Contributor

Summary

Migrates escurel's deployment docs to the new DataZoo substrate concept
(ADR-0013: Kamal on Hetzner cattle hosts + OpenTofu + private ghcr + a GCP
backplane — Secret Manager, GCS, Cloud Logging, Managed Prometheus; two-actor PR
model) and removes the retired HashiCorp/Packer artefacts.

Removed (archived-stack leftovers)

  • docs/deploy/escurel.nomad.hcl, escurel-explore.nomad.hcl,
    escurel-export-shipper.nomad.hcl — Nomad jobspecs
  • docs/deploy/escurel.pkr.hcl — Packer golden-image fragment
  • docs/deploy/escurel.tailscale-acl.json — per-app ACL (substrate-managed now)

Rewritten to the new concept

  • docs/deploy/substrate.md — escurel as a Kamal stateful pet: pinned
    to host-1, bind-mounting the data Volume at /data (FsStore), STOP-FIRST
    deploys (single-writer DuckDB), image via the repo Dockerfile → ghcr, secrets
    from GCP Secret Manager, internal exposure via apps/registry.yml, restic→GCS
    Volume backups. Platform mechanics deferred to the substrate-platform skill.
    The per-app Kamal deploy contract + registry row live in the substrate repo.
  • docs/deploy/README.md — file table (Dockerfile + publish-image.yml),
    Target C, placeholders.

Reference sync (no code change — every source hit was a comment)

CLAUDE.md (principle 4 + locked decisions); config.rs / health.rs /
main.rs / runner main.rs / s3.rs comments (Nomad→orchestrator/Kamal,
Vault→Secret Manager); spec/{README,platform,protocol,roadmap,storage}.md;
docs/README.md; operations.md; the escurel-platform skill refs (08/09/10);
apps/escurel-explore/README.md; the dated explorer-auth note. Fixed two broken
links to deleted files.

Left intentionally

The append-only CHANGELOG.md history; dx.md's FakeConsul (a triton
integration-test fixture, not a deployment artefact).

Test plan

Docs + comments + file deletions only — no behaviour change; all old-stack
source references were comments. cargo fmt --check + compile clean on the
touched crates; the full gate runs in CI.

Note: the substrate default store is now documented as FsStore on the host-1
Volume
(the substrate skill's canonical single-writer/STOP-FIRST pet), with
Hetzner Object Storage / STORAGE_BACKEND=s3 as optional blob offload.

🤖 Generated with Claude Code

… HashiCorp/Packer leftovers

The DataZoo substrate switched to ADR-0013: Kamal on Hetzner cattle hosts +
OpenTofu (CI-applied) + private ghcr + a GCP backplane (Secret Manager, GCS,
Cloud Logging, Managed Prometheus), two-actor PR model. The Nomad/Consul/Vault/
Fabio stack and the Packer golden image are retired.

Removed (archived-stack leftovers):
- docs/deploy/escurel.nomad.hcl, escurel-explore.nomad.hcl,
  escurel-export-shipper.nomad.hcl (Nomad jobspecs)
- docs/deploy/escurel.pkr.hcl (Packer golden-image fragment)
- docs/deploy/escurel.tailscale-acl.json (per-app ACL; now substrate-managed)

Rewrote to the new concept:
- docs/deploy/substrate.md — escurel as a Kamal stateful pet: host-1 data
  Volume + FsStore, STOP-FIRST deploys (single-writer DuckDB), image via the
  repo Dockerfile -> ghcr, Secret Manager secrets, internal exposure via the
  registry, restic->GCS Volume backups. Defers platform mechanics to the
  substrate-platform skill.
- docs/deploy/README.md — file table (Dockerfile + publish-image.yml, not
  jobspecs), Target C rewritten to the Kamal pet, placeholders table.

Synced references (no code change — all source hits were comments):
- CLAUDE.md principle 4 + locked decisions; config.rs/health.rs/main.rs/
  runner/s3.rs comments (Nomad->orchestrator/Kamal, Vault->Secret Manager);
  spec/{README,platform,protocol,roadmap,storage}.md; docs/README.md;
  operations.md; the escurel-platform skill refs (08/09/10);
  apps/escurel-explore/README.md; the dated explorer-auth note.

CHANGELOG history + the dx.md triton-test FakeConsul fixture left as-is.
fmt + compile clean on the touched crates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jrosskopf jrosskopf merged commit 60b1e35 into main Jun 22, 2026
1 check passed
@jrosskopf jrosskopf deleted the chore/deploy-substrate-migration branch June 22, 2026 03:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant