ops-agents: workspace bootstrap 자동화 + 시크릿 env 패턴 문서화

This commit is contained in:
kappa
2026-04-09 17:32:01 +09:00
parent 66fa3ec2ae
commit fa174b75ab

View File

@@ -166,12 +166,32 @@ heimdall 은 `--dangerously-skip-permissions` 플래그를 **사용하지 않음
#### tofu repo 워크스페이스 정본
변경 시 `kaffa/ops-agents-tofu` 하위 워크스페이스 디렉토리에서 작업 → commit/push → 라이브 컨테이너로 scp 동기화:
변경 시 `kaffa/ops-agents-tofu` 하위 워크스페이스 디렉토리에서 작업 → commit/push:
- `heimdall-workspace/{CLAUDE.md, mcp.json, README.md}``/home/kaffa/heimdall/{CLAUDE.md, .mcp.json}`
- `syn-workspace/{CLAUDE.md, mcp.json, runbooks/}``/home/kaffa/syn/{CLAUDE.md, .mcp.json, <런북들>}`
- `heimdall-workspace/{CLAUDE.md, mcp.json, runbooks/{k3s,incus,longhorn,network,patroni,storage}}``/home/kaffa/heimdall/{CLAUDE.md, .mcp.json, runbooks/}`
- `syn-workspace/{CLAUDE.md, mcp.json, runbooks/{bunnycdn,cloudflare,safeline,apisix}}``/home/kaffa/syn/{CLAUDE.md, .mcp.json, <런북들 top-level>}`
동기화 절차는 각 `README.md` 참조. 향후 cloud-init runcmd 에서 git clone 으로 자동 전개하도록 개선 예정.
**자동 전개 (2026-04-09 도입)**: cloud-init runcmd 가 부팅 시 ops-agents-tofu repo 를 `git clone --depth=1` 로 가져와 위 매핑대로 `/home/kaffa/<agent>/` 에 복사 + clone 정리. 신규 컨테이너 provisioning 시 manual scp 단계 0.
라이브 컨테이너에 워크스페이스 변경 반영 시:
- 직접 수정 + repo 에 commit/push (정합성)
- 또는 repo 변경 후 `scp` 로 sync
#### 시크릿 환경변수 (heimdall)
heimdall 은 `.mcp.json` 안에 토큰을 평문으로 두지 않는다. 패턴:
1. Vault `secret/apps/<service>` 에 토큰 저장
2. tofu 변수 `<service>_mcp_token` (sensitive) 에 주입 (terraform.tfvars 는 gitignore)
3. cloud-init 이 `/etc/heimdall/env` (root:kaffa 0640) 에 `KEY=value` 형식으로 작성
4. systemd `heimdall-tmux.service``EnvironmentFile=/etc/heimdall/env` 로 로드
5. `.mcp.json` 의 stdio 서버는 `command: "sh", args: ["-c", "exec npx ... --header \"X: $KEY\""]` 로 expansion
현재 적용 대상:
- `NOCODB_MCP_TOKEN` (Vault `secret/apps/nocodb.mcp_token`)
- `NOCODB_MCP_URL` (Vault `secret/apps/nocodb.mcp_url`)
syn 은 현재 토큰 필요한 MCP 가 없어 env file 미사용 (필요 시 동일 패턴 적용 가능).
- systemd `syn-tmux.service` (enabled, 첫 로그인 후 수동 start)
## 향후 확장 후보