① ベーステンプレと環境オーバーレイ(統一テンプレ配布)
Git にはベース .tpl と overlay/<env>.env.frag のみ。MESH_ENV は必ず明示します。
配置例
openclaw/
env/
openclaw.env.base.tpl
overlay/dev.env.frag
overlay/staging.env.frag
overlay/prod.env.frag
コマンド(リポジトリ初期化の目安)
mkdir -p openclaw/env/overlay
git add openclaw/env && git commit -m "chore(openclaw): base env template + env overlays"
ベース断片(例)
# openclaw.env.base.tpl
MESH_ENV={{MESH_ENV}}
MESH_NODE_ID={{MESH_NODE_ID}}
OPENCLAW_QUEUE_URL={{OPENCLAW_QUEUE_URL}}
TEMPLATE_REVISION={{TEMPLATE_REVISION}}
検証
grep -R '{{' openclaw/env --include='*.tpl' --include='*.frag'と必須キー表を突合。- 各 frag の
MESH_ENVが 1 行のみであること。
② 環境別シークレット束と注入
実値はバックエンドのみ。ノードへはレンダリング済み 1 ファイルを配布し、束はタグで区別します。
レンダリング例(GNU gettext の envsubst 想定)
export MESH_ENV=staging TEMPLATE_REVISION="$(git rev-parse --short HEAD)"
export OPENCLAW_QUEUE_URL="https://queue.staging.example.internal"
envsubst < openclaw/env/openclaw.env.base.tpl > /tmp/openclaw.base.rendered
cat openclaw/env/overlay/staging.env.frag >> /tmp/openclaw.base.rendered
# シークレットは別ファイルから source せず、*_FILE 形式でパスだけ渡す
mv /tmp/openclaw.base.rendered /etc/openclaw/openclaw.env
検証
grep -E '^(API_KEY|TOKEN|SECRET)=' /etc/openclaw/openclaw.env || true— 平文が無いこと。shasum -a 256 /etc/openclaw/openclaw.envを記録し、同環境ノードのみ一致。
③ 最小権限マウント
パスに環境名を含め、サービス用グループのみ読取可にします。
sudo install -d -m 0750 -o root -g openclaw /etc/openclaw/secrets.d/staging
sudo install -m 0440 -o root -g openclaw /dev/stdin /etc/openclaw/secrets.d/staging/queue_hmac.key <<'EOF'
(ここにパイプラインが書き込む — 手作業でシェルに貼らない)
EOF
検証
ls -le /etc/openclaw/secrets.d/stagingsudo -u nobody cat .../queue_hmac.keyが失敗すること。
④ ノード差分オーバーレイ
環境マージ後に $(hostname -s).env.frag 等で上書き。名前はインベントリと一致。
# 例: worker-03 のみスロット上げ
cat "openclaw/env/nodes/$(hostname -s).env.frag" >> /etc/openclaw/openclaw.env
検証
- 全 worker でキー一覧
grep -E '^[A-Z0-9_]+=' ... | cut -d= -f1 | sort -uを比較。 - カナリア 1 台で frag 変更し負荷分散とスモーク。
⑤ 変更ロールバックと監査の要点
ロールバックは前 SHA+シークレット束を再配布。監査は実行者・ハッシュ差分をログに残します。
git tag -a openclaw-env-20260328 -m "staging template + secrets bundle v12"
git push origin openclaw-env-20260328
# 失効時: 直前タグをチェックアウトして同パイプラインを再実行
git checkout openclaw-env-20260327
監査ログに載せるフィールド(例)
deployment_id、actor(人または CI のサービスアカウント)、mesh_env、template_revision、secrets_bundle_version、変更前後のshasum。
検証
- ログで
deployment_idが全ノードに付くこと。 - タグを戻し
openclaw config doctor(同等可)までの所要を演習記録。
受入れチェックリスト
- ☐Git に平文シークレットなし
- ☐
MESH_ENV常に dev/staging/prod のいずれか - ☐
secrets.d/<env>/が 0750/0440 - ☐ノード frag は小さくレビュー可能
- ☐Runbook にロールバック手順、四半期演習
キュー同期参照。
マルチノードを安全に揃える
MeshMac で OpenClaw の環境とシークレットを段階的に検証
ノードを増やしてもテンプレと注入を再現可能に。購入・料金はログイン不要。ヘルプ・ブログ一覧・OpenClaw 記事。
環境別注入
最小権限
ロールバック