ops-agents: heimdall 워크스페이스 레벨 정렬 반영 + 공통 레이아웃 문서화

This commit is contained in:
kappa
2026-04-09 17:20:04 +09:00
parent 974aa33124
commit 66fa3ec2ae

View File

@@ -130,12 +130,48 @@ fingerprint: `SHA256:eBCIglGmK/FnDxJLqxT0CJvRGFEGaIKRWnZ3ZpTaugU`
- State: 로컬 `terraform.tfstate` (gitignore, 수동 백업). 향후 R2 s3 backend 이주 검토.
- Secrets (`terraform.tfvars`): Vault 참조, 커밋 금지
### 런타임 설정 (Syn 기준)
- Debian 13 cloud 이미지, 4GiB RAM / 4 vCPU, limits.cpu/memory
- 유저: kaffa (uid 1000, NOPASSWD sudo)
### 런타임 설정 (heimdall · syn 공통)
두 에이전트 모두 동일한 워크스페이스 패턴:
- 베이스 이미지: Debian 13 cloud (incus `images:debian/13/cloud`)
- 유저: `kaffa` (uid 1000, NOPASSWD sudo)
- 셸: `fish`
- Claude Code 공식 인스톨러 (`curl -fsSL https://claude.ai/install.sh | bash`), npm 미사용
- uv / uvx (MCP 서버)
- `~/syn/` workspace: CLAUDE.md + bunnycdn/cloudflare/safeline/apisix 런북 + .mcp.json (bunnycdn/vault/openmemory/kubernetes)
- `uv` / `uvx` (MCP 서버·Python 실행)
- 리소스 limit: heimdall 8 GiB / 4 vCPU · syn 4 GiB / 4 vCPU
#### 파일 레이아웃 (컨테이너 내부)
| 경로 | 레벨 | 내용 |
|---|---|---|
| `/home/kaffa/<agent>/CLAUDE.md` | workspace | 에이전트 persona / 범위 / 프로토콜 |
| `/home/kaffa/<agent>/.mcp.json` | workspace | 프로젝트 MCP 서버 목록 |
| `/home/kaffa/<agent>/{runbooks 하위}` | workspace | 레이어별 운영 런북 (syn: bunnycdn/cloudflare/safeline/apisix) |
| `/home/kaffa/.claude/settings.json` | user-global | allowlist, enabledPlugins |
| `/home/kaffa/.claude/.credentials.json` | user-global | Claude Code OAuth |
| `/home/kaffa/.claude/plugins/` | user-global | 플러그인 marketplace |
| `/home/kaffa/.claude.json` | user-global | 프로젝트 상태, trust 플래그 |
| `/home/kaffa/obsidian/` | user-global | Obsidian vault clone (별도 git) |
| `/home/kaffa/.ssh/id_ed25519` | user-global | 공유 `ops-agents@kaffa` 키 |
#### systemd 서비스
| 에이전트 | 서비스 | WorkingDirectory | ExecStart |
|---|---|---|---|
| heimdall | `heimdall-tmux.service` | `/home/kaffa/heimdall` | `tmux new-session -d -s heimdall "claude"` |
| syn | `syn-tmux.service` | `/home/kaffa/syn` | `tmux new-session -d -s syn "claude --dangerously-skip-permissions"` |
heimdall 은 `--dangerously-skip-permissions` 플래그를 **사용하지 않음** — 2026-04-09 신규 생성 시 first-run prompt 경쟁조건으로 기동 정지 문제가 있었고 `settings.json` allowlist 로 충분히 대체 가능. syn 은 수동 first-login 단계를 이미 통과한 상태라 플래그 유지.
#### tofu repo 워크스페이스 정본
변경 시 `kaffa/ops-agents-tofu` 하위 워크스페이스 디렉토리에서 작업 → commit/push → 라이브 컨테이너로 scp 동기화:
- `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, <런북들>}`
동기화 절차는 각 `README.md` 참조. 향후 cloud-init runcmd 에서 git clone 으로 자동 전개하도록 개선 예정.
- systemd `syn-tmux.service` (enabled, 첫 로그인 후 수동 start)
## 향후 확장 후보