Commit Graph

106 Commits

Author SHA1 Message Date
f2ffbc0d56 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-hosts
2026-04-21 03:41:05 +02:00
e0e0ff5b6e chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-infra
2026-04-21 03:26:37 +02:00
b294518069 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-hosts
2026-04-21 03:26:28 +02:00
3f1234a286 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-infra
2026-04-21 03:11:58 +02:00
57a41f9885 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-hosts
2026-04-21 03:11:50 +02:00
02af1d85c7 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-infra
2026-04-21 02:57:20 +02:00
7e49eb2746 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-hosts
2026-04-21 02:57:09 +02:00
185bed088d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-infra
2026-04-21 02:42:42 +02:00
25a7f34030 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-hosts
2026-04-21 02:42:31 +02:00
270e11c84e chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-infra
2026-04-21 02:29:00 +02:00
6d9900eb6c chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-hosts
2026-04-21 02:28:46 +02:00
677cdb79df chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-04-21:
  - update .custodian-brief.md for railiance-infra
2026-04-21 02:15:44 +02:00
3f4f03e838 feat(ansible): inject ops-bridge key in base role at bootstrap
Add ops_bridge_pubkey to group_vars/all.yaml (public key only, safe to
commit) and inject it via ansible.posix.authorized_key in the base role,
immediately after SSH hardening. This ensures ops-bridge tunnel
connectivity is available as soon as SSH infrastructure is up on any
managed host — no manual key provisioning required for new nodes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 23:52:54 +01:00
ab92c58bda chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 13:42:11 +01:00
127231bf62 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 13:41:52 +01:00
72da7bd151 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 13:41:46 +01:00
93080128fd chore(workplan): mark T06 done (Gitea values → railiance-apps)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:41:21 +01:00
d722cac4a5 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 10:03:40 +01:00
afd664b248 chore(workplan): mark T05 done — Valkey standalone S3 asset deployed
bitnami/valkey 5.4.9 in platform namespace; gitea-valkey-cluster
subchart decommissioned; Gitea cache/session/queue verified working.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 10:03:14 +01:00
28f08b17f3 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 09:12:50 +01:00
26849bd4d6 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 09:12:40 +01:00
dfed454353 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 09:12:39 +01:00
bbde20d78d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 09:12:31 +01:00
7bff1f211d chore(workplan): mark T04 done — Gitea migrated to cnpg gitea-db
postgresql-ha subchart decommissioned; 4 users, 26 repos verified intact;
NetworkPolicy for default→databases ingress applied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 09:12:22 +01:00
2d7e0101bc feat(infra): UFW k3s routing + full deploy runbook
- base role: allow UFW routing direction (required for k3s flannel
  pod networking to function across nodes)
- docs/deploy-stack.md: full S1→S5 ordered deploy runbook with
  pre-conditions checklist and layer-by-layer steps

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 02:28:51 +01:00
aa822164b5 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 02:24:47 +01:00
74f7c72dbb chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 02:24:32 +01:00
13443ee2d5 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 02:24:27 +01:00
11a2c37bde chore(workplan): mark T03 and T08 done in WP-0004
T03 (gitea-db cnpg cluster): cluster healthy after adding missing
NetworkPolicies for databases namespace default-deny-all policy.
T08 (deploy-stack docs): docs/deploy-stack.md written last session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 02:24:07 +01:00
a787a8acb0 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 02:20:53 +01:00
8c08b4b806 fix(custodian-agent): dedicated playbook, correct working dir
- ansible/playbooks/custodian-agent.yaml: minimal playbook with only
  the custodian_agent role — avoids loading base/sops_agent/etc when
  all we need is key injection
- Makefile: use custodian-agent.yaml in provision targets; remove
  --tags workaround (was fragile; standalone playbook is correct)

Manual invocation (from CoulombCore):
  cd ~/railiance-infra/ansible
  ansible-playbook playbooks/custodian-agent.yaml -u tegwick --limit Railiance01

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 02:20:33 +01:00
087f5da57b chore: add .venv to .gitignore
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 01:53:58 +01:00
ff59d4e0f8 feat(ansible): add swapfile + resource_limits roles; add CoulombCore to inventory
T01: roles/swapfile — idempotent 4GB swapfile, vm.swappiness=10, fstab entry
T02: roles/resource_limits — PAM nproc caps (512/1024), systemd user-1000.slice
     memory limits (1500M/512M); templated per-host via host_vars
- inventory/host_vars/CoulombCore.yml — host-specific vars for both roles
- inventory/servers.yaml — add CoulombCore with id_ops SSH key
- inventory_from_yaml.py — load host_vars files into Ansible hostvars
- playbooks/bootstrap.yaml — include swapfile + resource_limits roles
- workplans/WP-0004 — flag T04/T09/T10 needs_human, add CoulombCore-local convergence note

Codifies manual INC-002 hardening. See RAIL-HO-WP-0004-T01/T02.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 01:49:35 +01:00
e10789bdd2 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 01:26:01 +01:00
abb3c50a5c chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 01:25:27 +01:00
f5bfc1a922 feat(custodian-agent): add custodian agent public key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC/V9fe5MGKdhTBz9KwEvC1NE+HjdoCtQocpGxP6Pko9

Generated 2026-03-27 via make custodian-keygen. Private key at workstation
only (~/.ssh/id_custodian_agent), never committed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 01:22:45 +01:00
30a3f908aa feat(custodian-agent): Ansible role + Makefile for Custodian SSH identity
Establishes a dedicated SSH keypair for the Custodian automation agent:
- ansible/roles/custodian_agent/: authorized_key task (tagged custodian_agent)
- ansible/inventory/group_vars/all.yaml: custodian_agent_user/pubkey vars
- ansible/playbooks/bootstrap.yaml: custodian_agent role added
- Makefile: provision-custodian-agent / provision-custodian-agent-host targets

Keypair generation: cd ~/the-custodian && make custodian-keygen
Then deploy:        cd ~/railiance-infra && make provision-custodian-agent

The private key lives at ~/.ssh/id_custodian_agent — never committed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 01:21:57 +01:00
caa6ae36da feat(workplan): add RAIL-HO-WP-0004 production-readiness workplan
10-task cross-layer workplan covering: Ansible hardening codification (T01-T02),
cnpg platform baseline superseding stale WP-0001 (T03-T05), S2→S5 Gitea boundary
fix (T06), SSH git automation on CoulombCore (T07, done), deploy-stack docs (T08),
state-hub + activity-core migration to cluster (T09-T10).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 01:01:47 +01:00
9d59b5c667 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 01:00:15 +01:00
967707bdca chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 00:59:45 +01:00
c4470fa4ac chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 00:58:30 +01:00
f2951f1a5b chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 00:58:11 +01:00
3d647e7181 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 00:54:37 +01:00
8688750dce chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 00:54:27 +01:00
4b3c2dcdce chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 00:53:47 +01:00
1c56bd3efc chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 00:53:38 +01:00
cc8c05fdd2 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 00:53:06 +01:00
1171a27324 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 00:52:54 +01:00
86ceabd80e chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-hosts
2026-03-27 00:10:20 +01:00
fda9d1c386 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-03-27:
  - update .custodian-brief.md for railiance-infra
2026-03-27 00:10:12 +01:00