fix(harnesses): migrate to ESO secrets_required form, mirror agent-runtimes
The CRS-served harnesses still carried `secrets_files: [{encrypted: true}]`
which now hard-fails on H-SECRET-1 ("SOPS-encrypted secrets_files entries
are no longer permitted") in the dispatcher's harness validator. Sync the
8 provider harnesses with the agent-runtimes copies: same `secrets_required`
shape, same `init.sh` (ESO-mounted file paths), same `bin/` wrappers.
Use bare `account_ref: "<provider>"` (not `<provider>.cp:cp` — that
scope-kind isn't valid per SR-DISP-1-FIELD).
Provider key names follow the per-provider schema as emitted by the CP
provisioner: minimax/airouter/z-ai → api_key; gitea-https/gitea-admin →
{token,base_url,username}; gitea-ssh* → {host,private_key}.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,8 @@ ssh_hosts:
|
||||
scripts:
|
||||
init: "./init.sh"
|
||||
|
||||
secrets_files:
|
||||
- source: ./ssh-key.sops.env
|
||||
target: /opt/harness/secrets/gitea-ssh-accelerators/ssh-key.sops.env
|
||||
encrypted: true
|
||||
secrets_required:
|
||||
- name: gitea-ssh-accelerators
|
||||
account_ref: "gitea-ssh-accelerators"
|
||||
mount_path: /run/agent/secrets/gitea-ssh-accelerators
|
||||
mode: "0400"
|
||||
|
||||
@@ -1,29 +1,21 @@
|
||||
#!/bin/bash
|
||||
# gitea-ssh-accelerators init: copy the ESO-mounted SSH key to the path the
|
||||
# harness-init `~/.ssh/config` expects (`IdentityFile /home/agent/.ssh/gitea-oreillyit-nz-accelerators`).
|
||||
#
|
||||
# Per H-SECRET-4: NO `export` of credentials. (The earlier draft set
|
||||
# `GIT_SSH_COMMAND` here — a path, not a credential — but that export dies
|
||||
# with the subshell and the harness-init's SSH config is the load-bearing
|
||||
# path anyway.)
|
||||
set -euo pipefail
|
||||
|
||||
# Extract SSH private key from decrypted env file for the accelerators identity.
|
||||
# The meta-init script generates ~/.ssh/config with
|
||||
# IdentityFile /home/agent/.ssh/gitea-oreillyit-nz-accelerators
|
||||
# matching the ssh_hosts alias in harness.yaml.
|
||||
SSH_KEY_SRC="/run/agent/secrets/gitea-ssh-accelerators/id_ed25519"
|
||||
SSH_KEY_DST="/home/agent/.ssh/gitea-oreillyit-nz-accelerators"
|
||||
|
||||
SSH_KEY_FILE="/home/agent/.ssh/gitea-oreillyit-nz-accelerators"
|
||||
|
||||
for env_file in /opt/harness/secrets/gitea-ssh-accelerators/*.decrypted.env /opt/harness/secrets/gitea-ssh-accelerators/*.env; do
|
||||
[ -f "$env_file" ] || continue
|
||||
while IFS='=' read -r key value; do
|
||||
[[ "$key" =~ ^[[:space:]]*# ]] && continue
|
||||
[[ -z "$key" ]] && continue
|
||||
if [ "$key" = "GITEA_SSH_KEY" ]; then
|
||||
mkdir -p /home/agent/.ssh
|
||||
echo "$value" | base64 -d > "$SSH_KEY_FILE"
|
||||
chmod 600 "$SSH_KEY_FILE"
|
||||
chown agent:agent "$SSH_KEY_FILE"
|
||||
echo "SSH key written to $SSH_KEY_FILE"
|
||||
break 2
|
||||
fi
|
||||
done < "$env_file"
|
||||
done
|
||||
|
||||
if [ ! -f "$SSH_KEY_FILE" ]; then
|
||||
echo "WARNING: GITEA_SSH_KEY not found in any env file under /opt/harness/secrets/gitea-ssh-accelerators/"
|
||||
if [ ! -r "$SSH_KEY_SRC" ]; then
|
||||
echo "ERROR: SSH key not found at $SSH_KEY_SRC — ESO ExternalSecret not Ready?" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p /home/agent/.ssh
|
||||
install -m 0600 -o agent -g agent "$SSH_KEY_SRC" "$SSH_KEY_DST"
|
||||
echo "gitea-ssh-accelerators: SSH key staged at $SSH_KEY_DST (0600 agent:agent)"
|
||||
|
||||
Reference in New Issue
Block a user