docs: nomad-cutover-runbook.md — end-to-end cutover procedure #1060
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#1060
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal: write
docs/nomad-cutover-runbook.md— the end-to-end procedure to cutover factory from docker-compose on disinto-dev-box to Nomad on disinto-nomad-box.Prerequisites (must be done before running the runbook):
disinto backup create(#1057),disinto backup import(#1058)disinto-admin/disintoconfirmed in sync (done 2026-04-19)Cutover decisions already locked (from parent #1037 scoping):
Runbook sections (deliverable as
docs/nomad-cutover-runbook.md)1. Pre-cutover readiness checklist
git logparity between dev-box Forgejo and Codeberg)2. Pre-cutover artifact: backup
3. Pre-cutover dry-run
On a throwaway LXC (
lxc launch ubuntu:24.04 cutover-dryrun):Verify issue count + ops-repo refs match source.
4. Cutover T-0 (operator executes; <5min target)
docker-compose stopon dev-box (preserves volumes for rollback)disinto init --backend=nomad --import-env .env --with edgeon nomad-box (if not already provisioned)./bin/disinto backup import /tmp/disinto-backup-*.tar.gzon nomad-boxclaude loginon nomad-box to set up Anthropic OAuthsystemctl stop reverse-tunnelon dev-box/etc/systemd/system/reverse-tunnel.serviceto nomad-box, or regenerate via initecho <nomad-box-pubkey> >> /home/johba/.ssh/authorized_keyswith same restricted-command as the dev-box keysystemctl enable --now reverse-tunnelon nomad-boxcurl https://self.disinto.ai/api/v1/versionreturns new box's version5. Post-cutover smoke
curl https://self.disinto.ai→ Forgejo welcome6. Rollback (if any step 4 gate fails)
systemctl stop reverse-tunnelon nomad-boxsystemctl start reverse-tunnelon dev-boxdocker-compose up -don dev-box7. Post-stable cleanup (T+1 week)
docker-compose down -von dev-box/var/lib/docker/volumes/disinto_*to cold storageFile location
docs/nomad-cutover-runbook.mdAcceptance
Scope hint for implementer
This is a docs-only PR. No code changes — just write the markdown per the structure above. Reference #1057 and #1058 by number where the runbook invokes those tools. Do NOT try to automate the operator steps (section 4.6) — those are intentionally manual.
Tracking: parent #1037 closes when this runbook is merged AND has been used successfully for a real cutover.
docsto docs: nomad-cutover-runbook.md — end-to-end cutover procedure