Operator tooling: automation candidates and scripts/ organization (2026-10-14 survey) #153
Loading…
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?
Survey of
infra,manage,setupandscripts/after the rotation work. Done so far: #151 (rotation scripts open thechore(secrets)PR and set the manifest'srotated_atthemselves), #152 (./infrais the one front door: day-2 ops forwarded to./manage, every rotation, checks, keys). Below is what is left, ranked by value.Automation candidates
infra approve <PR>: re-run the promotion check and./infra plan, show the result, ask for a typed confirmation, then merge the promotion PR withtea. Merges from the Forgejo UI have not taken several times (#129, #133, #134; see #116), and the CLI merge has worked every time. Keeps the approval explicit.infra deploy --tags: after the deploy, runmanage health check --service <tag>for each deployed tag, andcheck-exposure.pyafter atraefik, firewall orhardeningdeploy. Today both are separate manual steps that are easy to skip.deploy-services.sh: a backgrounded run (!in Claude Code) fails inside Ansible with "requires blocking IO" only after the Tailscale preauth key was minted. Check before minting and say "run it in a terminal tab".infra wait <PR|staging>: wait for CI with modest polling via the API (a 20 sgit ls-remoteloop hit Forgejo's 429).trivy-scanintoforgejo-upsert-issue.py, like the monthly expiry report (#112), so a new CRITICAL image is visible without ssh.infra statusreports the count and oldest age of~/.local/state/infra/vault.sops.yml.*(encrypted copies); deleting stays manual.infra tidy: prune merged local branches and stale worktrees.scripts/ organization
scripts/is flat: operator commands, CI-only tools, migration-only wizards and Ansible-Vault leftovers sit side by side../infraafter #152scripts/migration/, delete when each migration endsRecommendation: no mass move (high churn in workflows/docs for little gain); move only the migration-only three, and add this table to
scripts/CLAUDE.mdso a reader can tell a command from a helper.Not changed on purpose
./managestays a separate script:roles/manage_cliinstalls it on the hosts asinfra-manage, where git, tea and the vault are not available../setupstays the engine; staging, DR and bootstrap call it directly.Operator tooling added or fixed this cycle (all merged): manage user roles/access/grant/revoke (#248); manage health recognises Compose containers and monitors Prometheus/Alertmanager (#249); manage backup restore validates the snapshot before any remote work (#226); manage node list works on macOS, no timeout binary (#224); scripts/secrets/with-vault.sh --env (#228); scripts/checks/check-exposure.py login-redirect checks (#250); infra-state-snapshot in the backup run (#222, #223); ./infra moved into scripts/lib/infra (#205). Candidates still open: a tailnet-reach smoke script; a one-command OVH rehearsal runner; a Headscale stale-node cleaner (list + delete with confirmation).