痛點拆解
環境矩陣:dev/staging/prod
環境即策略邊界。下表對照 密鑰隔離 與變更節奏(💻 建議節點規模)。
| 維度 | Development | Staging | Production |
|---|---|---|---|
| 密鑰根路徑 | /etc/openclaw/secrets.d/dev |
.../staging(獨立租戶) |
.../prod(獨立 KMS/金鑰版本) |
| 權杖範圍 | 沙箱讀寫可較寬 | 與正式對齊但資料隔離 | 能唯讀則勿給寫入(登錄檔/成品庫) |
| 變更節奏 | 功能分支可浮動 | 標籤候選版 | 不可變標籤+簽章清單 |
| 爆炸半徑 💻 | 單機或單台實驗節點 | 部分工作者子網 | 灰度通過後整網格 |
步驟一|版控目錄與模板修訂(統一分發)
模板入 Git;密鑰不入庫。基底加三 overlay,短 SHA 寫 TEMPLATE_REVISION 供啟動列印。
openclaw-config/templates/
openclaw.env.base.tpl
overlay.dev.env
overlay.staging.env
overlay.prod.env
nodes/
worker-01.patch.env
可執行指令(維運筆電或 CI):
cd openclaw-config
git rev-parse --short HEAD > templates/.template_revision
驗證:test -s templates/.template_revision 應為真。
步驟二|依 MESH_ENV 渲染(分環境注入準備)
匯出 MESH_ENV,勿只靠主機名。佔位符僅指密鑰檔路徑。切換時參任務佇列同步。
export MESH_ENV=staging
export TEMPLATE_REVISION="$(cat templates/.template_revision)"
cat templates/openclaw.env.base.tpl \
templates/overlay.${MESH_ENV}.env \
| envsubst > /tmp/openclaw.${MESH_ENV}.env
驗證:grep -E '^(MESH_ENV|TEMPLATE_REVISION)=' /tmp/openclaw.${MESH_ENV}.env。
步驟三|最小權限密鑰掛載
每環境獨立目錄落實 密鑰隔離:目錄 0750、檔 0440、群組 openclaw;閘道與工作者分檔。
sudo install -d -o root -g openclaw -m 0750 \
/etc/openclaw/secrets.d/staging
sudo install -m 0440 -g openclaw ./staging_api_token \
/etc/openclaw/secrets.d/staging/api_token
驗證:守護帳號可讀、一般用戶拒絕(同上 test -r)。
步驟四|節點差異覆寫(最後套用)
環境層合併後再附盤點補丁,只放佇列、旗標、區域端點等非密鑰差異。
NODE_ID="$(scutil --get ComputerName | tr ' ' '-')"
test -f "templates/nodes/${NODE_ID}.patch.env" && \
cat "templates/nodes/${NODE_ID}.patch.env" >> /tmp/openclaw.${MESH_ENV}.env
驗證:同角色兩節點 diff 僅預期鍵;NODE_ID 對資產表。協作見多節點協作。
步驟五|驗證(不洩漏值)
重啟前比對鍵名金樣並脫敏;以守護使用者跑診斷(指令依團隊版次替換)。
awk -F= '/^[A-Z0-9_]+=/ {print $1"=<redacted>"}' \
/tmp/openclaw.${MESH_ENV}.env | sort | diff -u golden-keys.txt -
sudo -u openclaw openclaw doctor --config /tmp/openclaw.${MESH_ENV}.env || true
驗證:diff 無意外鍵;缺鍵時診斷須失敗封閉。
變更回滾與稽核要點(HowTo 清單)
回滾:留存舊模板 SHA 與 SECRET_BUNDLE_VERSION;還原=重部署舊版,禁線上手改。
git checkout <known_good_sha> -- templates/
./scripts/render-all.sh staging
sudo launchctl kickstart -k system/org.openclaw.worker
稽核清單(逐項勾選):
- ☐ 每次發布日誌含
deployment_id、Git SHA、操作者身分。 - ☐ 密鑰檔拷貝時記錄校驗和;輪換時遞增
SECRET_BUNDLE_VERSION。 - ☐ 季度演練還原上一版模板與密鑰套組並計時。
- ☐ 正式密鑰緊急存取須工單號並留存 sudo/MDM 紀錄。
可引用守門值
- 密鑰根目錄權限建議 0750、密鑰檔 0440。
- 單一節點補丁檔內獨立鍵建議不超過 十二 個,逾量應拆分角色。
- 模板變更灰度建議先 一 台工作者加 一 台閘道,再擴至全 多節點 網格。