HowTo 2026

2026 OpenClaw MeshMac 실전: 다중 노드 환경 변수 템플릿·시크릿 분환경 주입(dev/staging/prod)

2026.03.28 Meshmac R&D Team 9분 읽기

다중 노드 오케스트레이션 팀은 OpenClaw·MeshMac에서 종종 “같은 스택인데 한 노드만 키가 다르다”는 사고를 겪습니다. 본문은 환경 변수 단일 템플릿 배포와 시크릿 격리(dev/staging/prod)를 재현 가능한 단계·표·체크리스트로 묶습니다. OpenClaw 허브, 스킬 락·환경 템플릿, 최소 권한 시크릿과 함께 보세요.

왜 드리프트가 나는가

  1. 템플릿 이중화: 노드마다 수동 export가 쌓이면 동일 이미지도 결과가 갈립니다.
  2. 시크릿 과잉 공유: 한 파일에 prod 키까지 넣으면 스테이징이 프로덕션을 건드릴 수 있습니다.
  3. 감사 공백: 누가 언제 렌더했는지 없으면 롤백·컴플라이언스 대응이 느립니다.

환경별 결정 매트릭스

항목 dev staging prod
템플릿 소스 Git 단일 openclaw.env.tpl 동일 리비전 고정 태그·서명된 번들만
시크릿 저장 로컬 금고·짧은 TTL 팀 금고·읽기 전용 토큰 HSM/금고·이중 승인
파일 퍼미션 600·단일 유저 서비스 계정만 마운트 ro·감사 로그

노드 공통 설치 흐름은 클러스터 설치·설정 동기화 가이드와 맞춥니다.

HowTo 단계·검증

① 저장소 레이아웃·슬롯

단일 템플릿과 환경 슬롯만 Git에 둡니다.

mkdir -p deploy/templates
cat > deploy/templates/openclaw.env.tpl <<'EOF'
MESH_ENV={{MESH_ENV}}
MESH_NODE_ID={{MESH_NODE_ID}}
OPENCLAW_QUEUE_URL={{OPENCLAW_QUEUE_URL}}
API_TOKEN={{API_TOKEN}}
EOF

검증

grep -E '^\{\{[A-Z0-9_]+\}\}$' deploy/templates/openclaw.env.tpl || echo "OK: 플레이스홀더만 존재"

② 금고에서 렌더·최소 권한

환경별 시크릿 경로를 분리하고 렌더 산출물은 좁게 둡니다.

export MESH_ENV=staging
vault kv get -field=api_token secret/openclaw/${MESH_ENV} > /run/openclaw/.api_token
envsubst < deploy/templates/openclaw.env.tpl > /etc/openclaw/env
chmod 600 /etc/openclaw/env /run/openclaw/.api_token
chown openclaw:openclaw /etc/openclaw/env

검증

stat -f "%Sp %Su" /etc/openclaw/env | grep '^-rw------- openclaw'

③ 노드 오버레이

역할·디스크 차이만 YAML로 덮습니다.

cat > /etc/meshmac/node.yaml <<'EOF'
node_id: mac-worker-03
disk_cache_gb: 120
ingress_bind: "127.0.0.1:8443"
EOF

검증

yq '.node_id' /etc/meshmac/node.yaml | grep -q 'mac-worker'

④ 캐너리·롤백

한 노드에서 헬스 통과 후 확장하고 실패 시 Git 리비전을 되돌립니다.

git tag deploy/openclaw-env-$(date +%Y%m%d%H%M)
# 문제 시
git checkout deploy/openclaw-env-이전태그 -- deploy/templates/openclaw.env.tpl
./scripts/render-env.sh staging && sudo systemctl restart openclaw

검증

curl -sf http://127.0.0.1:8080/healthz | jq -e '.ok==true'

⑤ 감사·추적

렌더·접근 이벤트에 템플릿 리비전·노드 ID를 남깁니다.

logger -t openclaw-env "render template_rev=${GIT_SHA} env=${MESH_ENV} node=${MESH_NODE_ID}"
grep openclaw-env /var/log/system.log | tail -n 5

검증

grep openclaw-env /var/log/system.log | grep -q "template_rev="

운영 체크리스트

  • Git 템플릿에 리터럴 시크릿 없음(git secrets·CI 스캔)
  • prod 키는 prod 노드 마운트에만 존재·읽기 전용
  • 노드 오버레이에 비밀이 없고 구조적 차이만 포함
  • 롤백 태그·런북 링크가 팀 위키에 고정
  • 감사 로그 보존 기간(예: 90일) 합의

인용 가능 기준

  • 렌더 산출 env 파일 권한: 600·소유 서비스 계정 단일.
  • 캐너리: 전체 노드의 10~20% 또는 최소 1대에서 스모크 후 확장.
  • 템플릿 변수명: 대문자 스네이크·누락 시 기동 실패가 나도록 설계.

구성을 맞췄다면 노드와 접근 경로를 고르세요

Meshmac 원격 Mac 풀에 동일 템플릿·시크릿 정책을 반영하려면 도움말 센터의 SSH·초기 설정을 확인하고, 구매·대여·가격·노드에서 옵션을 비교하세요. 블로그 목록·OpenClaw 모음으로 인접 주제를 이어 읽을 수 있습니다.