Commit Graph

41 Commits

Author SHA1 Message Date
4afc2a0fd6 fix: correct Goss test suite to match actual server state
Fixes found by running make verify against Railiance01:

- Fix playbook_dir paths (ansible/playbooks/ is 2 levels from repo root)
- age/sops are binary installs, not apt packages — use command checks
- Admin user is tegwick, not admin; sudoers at /etc/sudoers.d/tegwick
- sudo granted via sudoers file, not group membership — remove group assert
- Ubuntu 24.04 socket-activates SSH; assert ssh.socket not ssh.service
- SSH hardening lives in sshd_config.d/10-hardening.conf, not main config
- UFW SSH rule uses app name "OpenSSH", not port 22/tcp
- Replace /regex/i patterns with plain strings (Goss file.contents)
- Update spec/server-baseline.yaml to match all findings

All 27 assertions now pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 15:50:06 +00:00
8f5799553e feat: implement WP-0002 — Goss test suite, verify playbook, and ADR-002
- goss/baseline.yaml: assertions for all spec/server-baseline.yaml items
  (packages, services, SSH config, UFW rules, admin user, fail2ban, HISTCONTROL)
- goss/vars/baseline-vars.yaml: parameterised ports and paths
- ansible/roles/goss/: installs Goss binary (v0.4.9), deploys tests,
  runs assertions in TAP format, fetches report to reports/
- ansible/playbooks/verify.yaml: playbook wrapping the goss role
- Makefile: add 'make verify' target; update 'make status' with hint
- docs/adr/ADR-002: formal repo boundary — railiance-hosts vs railiance-bootstrap
- workplans/RAIL-HO-WP-0002: registered workstream 8fed53c2, T03–T06 done

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 12:38:48 +01:00
2be5de2a3a feat: add server baseline spec, status command, and test suite workplan
- Fix duplicate `converge` Makefile target (was causing warnings)
- Fix `make status` SSH hardening check (use grep on sshd_config instead
  of sshd -T which fails without hostkeys)
- Add `make status` target with connectivity, UFW, fail2ban, SSH checks
- Add spec/server-baseline.yaml — authoritative target-state spec for
  all managed nodes (firewall, SSH, services, packages, users)
- Add workplan RAIL-HO-WP-0002 for Goss test suite and repo boundary ADR

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 11:10:27 +00:00
abbc5bab2c contrib: FR for update_workstream MCP tool
Missing tool discovered during offline-inbox drain — repo_goal_id on
workstream bf40b47e is null in DB but correctly set in the workplan file.
No MCP path to fix this without a direct API call.

Contribution id: 0450a858-bccc-4cbf-8052-38c1654aa005

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 00:10:42 +01:00
5517d91bf5 chore: drain offline inbox — Railiance01 bootstrap milestone
State Hub was unreachable during the offline session that bootstrapped
Railiance01. Inbox event drained and T03/T04/T05 task statuses synced
to the hub (C-10 drift fixed via check_repo_consistency --fix).

Progress event id: de18d727-eea5-4dfa-913c-8fe62245cda4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 00:08:20 +01:00
ea7270368f chore: add state-hub offline inbox and FR for ingest support
- state-hub-inbox/: convention for queuing progress events during
  degraded-mode sessions (no tunnel to State Hub)
- First pending event: Railiance01 bootstrap milestone (T03-T05)
- contrib/feature-requests/: FR for automated inbox ingest in state-hub
- README documents the drain procedure until automation is in place

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 22:58:51 +00:00
679d0d67b1 feat: bootstrap and harden Railiance01 at HostEurope
- Extend base role with fail2ban, UFW k3s/Flannel rules, HISTCONTROL
- Add handlers dir for fail2ban restart
- Fix inventory script to emit correct dynamic inventory JSON format
- Add roles_path to ansible.cfg so playbook finds roles
- Add Railiance01 (92.205.62.239) to inventory/servers.yaml
- Mark workplan T03/T04/T05 as done

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 22:53:38 +00:00
5187e63504 Link to state-hub and hosteurope integration 2026-03-08 23:28:59 +01:00
03f1d35ff4 We will for now have servers on hosteurope so i changed the README 2026-03-08 22:56:55 +01:00
32e316a196 added information on nydus dependency 2026-03-08 22:55:38 +01:00
6957614fd7 feat: add make targets for convergence 2025-09-14 02:23:03 +00:00
9685276eeb docs: link to convergence documentation from README 2025-09-14 02:14:34 +00:00
492f605895 docs: establishing baseline security and tools 2025-09-14 04:10:57 +02:00
43455a4481 feat: add terraform-providers targets 2025-09-14 01:31:03 +00:00
1da97ad867 build: first successfull plan, apply, destroy of server 2025-09-14 01:20:54 +00:00
94b9bba11d fix: use the apikey 2025-09-14 00:24:48 +00:00
7547513738 fix: apikey loading was broken 2025-09-14 00:11:27 +00:00
59283fff6d fix: load api-key from secrets 2025-09-13 23:57:54 +00:00
17c9963c0f fix: doctor target reports terraform now 2025-09-13 23:37:34 +00:00
298f5bd6a2 fix: set executable flag 2025-09-13 23:12:40 +00:00
26d2854c07 docs: added fast path documentation 2025-09-14 01:08:26 +02:00
389c20478f docs: add documentation for provisioning a server 2025-09-14 00:57:26 +02:00
bc0ea33555 feat: script to set up servers at hetzner 2025-09-14 00:48:55 +02:00
75af105f6c docs: added documentation about setting up ssh-access 2025-09-14 00:47:41 +02:00
ae128b14e5 security: add admin ssh key 2025-09-14 00:39:03 +02:00
627f3ecac4 security: added encrypted hetzner api token 2025-09-13 22:23:24 +00:00
77c1323ae5 fix: Makefile target hooks makes precommit work finally 2025-09-13 21:58:19 +00:00
9dd1a655d7 This now should not commit as I ran make hooks 2025-09-13 21:49:00 +00:00
2bcf4d2fda fix: broken inlining of python block moved to script 2025-09-13 23:46:48 +02:00
da8cbbf6b5 Merge branch 'main' of http://92.205.130.254:32166/coulomb/railiance-hosts into main 2025-09-13 23:34:54 +02:00
bde4d85a52 chore: extended makefile with hooks target to set up pre-commit 2025-09-13 23:34:27 +02:00
8aea3e4ff1 test: This commit should be blocked 2025-09-13 21:24:03 +00:00
2204058c7b security: pre-commit check for unencrypted stuff in secrets 2025-09-13 23:19:59 +02:00
8c0fb05b1e test: This unencrypted file under secrets should not commit! 2025-09-13 23:06:43 +02:00
1192a0cece docs: added secrets handling digest 2025-09-13 22:52:18 +02:00
59bc9bbcf4 docs: improved masterkey setup documentation 2025-09-13 22:48:15 +02:00
8101818cdb docs: add initial repo cloning documentation 2025-09-13 21:49:38 +02:00
96099eeb10 chores: configure sops with age masterkey 2025-09-13 21:34:04 +02:00
811ac31c08 chore: add my age public masterkey 2025-09-13 21:19:08 +02:00
31f30373a0 docs: add documentation about secret key generation 2025-09-13 20:47:24 +02:00
9860735f82 feat: initial import of RailianceHosts starter 2025-09-13 20:26:11 +02:00