railiance-platform/deploy/mas-backup/install.sh
codex edd8687ea6
All checks were successful
CCR intake gate / gate (push) Successful in 2m14s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Alert platform-root when the MAS evidence backup fails or goes stale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 4541@bnt-lap001
Assistant-Session: 2099b3aa-d7d9-49a9-ab4e-fa8b7d0e39e8
2026-11-03 09:14:46 +01:00

36 lines
2.1 KiB
Bash
Executable file

#!/bin/sh
# Install the MAS evidence backup worker on railiance01 and run the first upload.
# Run as root from a directory holding exactly the files named in SHA256SUMS.
# Effects: /opt/railiance-platform/mas-backup/, four systemd units,
# /etc/mas-backup/age-recipient (public key). Timers are enabled only after
# the first backup and freshness check pass. Does not scale, roll or restart
# the MAS facility and never deletes retained objects.
set -eu
[ "$(id -u)" -eq 0 ] || { echo '{"status":"failed","code":"root_required"}'; exit 1; }
sha256sum -c --quiet SHA256SUMS
[ -f /etc/mas-backup/primary.env ] || { echo '{"status":"failed","code":"primary_env_missing"}'; exit 1; }
recipient=$(cat age-recipient)
case "$recipient" in age1*) ;; *) echo '{"status":"failed","code":"age_recipient_required"}'; exit 1;; esac
install -d -m 0755 -o root -g root /opt/railiance-platform/mas-backup
for f in mas_evidence_backup.py mas_evidence_capture.py mas_evidence_archive.py primary_application_archive.py mas_evidence_notify.py; do
install -m 0644 -o root -g root "$f" /opt/railiance-platform/mas-backup/"$f"
done
install -m 0644 -o root -g root age-recipient /etc/mas-backup/age-recipient
for u in mas-evidence-backup.service mas-evidence-backup.timer mas-evidence-freshness.service mas-evidence-freshness.timer mas-evidence-alert@.service; do
install -m 0644 -o root -g root "$u" /etc/systemd/system/"$u"
done
systemctl daemon-reload
systemctl start mas-evidence-backup.service
systemctl start mas-evidence-freshness.service
systemctl enable --now mas-evidence-backup.timer mas-evidence-freshness.timer >/dev/null 2>&1
python3 - <<'PY'
import json, pathlib
latest = json.loads(pathlib.Path("/var/lib/mas-evidence-backup/latest-offsite.json").read_text())
keep = ("status", "captured_at", "object_key", "version_id", "ciphertext_sha256", "ciphertext_bytes",
"remote_retrieval_verified", "immutable_create", "retained_objects_deleted", "run", "capture")
print(json.dumps({k: latest.get(k) for k in keep}, indent=2, sort_keys=True))
PY
systemctl list-timers --all --no-pager | grep mas-evidence