ops-agents: heimdall 워크스페이스 레벨 정렬 반영 + 공통 레이아웃 문서화
This commit is contained in:
@@ -130,12 +130,48 @@ fingerprint: `SHA256:eBCIglGmK/FnDxJLqxT0CJvRGFEGaIKRWnZ3ZpTaugU`
|
|||||||
- State: 로컬 `terraform.tfstate` (gitignore, 수동 백업). 향후 R2 s3 backend 이주 검토.
|
- State: 로컬 `terraform.tfstate` (gitignore, 수동 백업). 향후 R2 s3 backend 이주 검토.
|
||||||
- Secrets (`terraform.tfvars`): Vault 참조, 커밋 금지
|
- Secrets (`terraform.tfvars`): Vault 참조, 커밋 금지
|
||||||
|
|
||||||
### 런타임 설정 (Syn 기준)
|
### 런타임 설정 (heimdall · syn 공통)
|
||||||
- Debian 13 cloud 이미지, 4GiB RAM / 4 vCPU, limits.cpu/memory
|
|
||||||
- 유저: kaffa (uid 1000, NOPASSWD sudo)
|
두 에이전트 모두 동일한 워크스페이스 패턴:
|
||||||
|
|
||||||
|
- 베이스 이미지: 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 미사용
|
- Claude Code 공식 인스톨러 (`curl -fsSL https://claude.ai/install.sh | bash`), npm 미사용
|
||||||
- uv / uvx (MCP 서버용)
|
- `uv` / `uvx` (MCP 서버·Python 실행)
|
||||||
- `~/syn/` workspace: CLAUDE.md + bunnycdn/cloudflare/safeline/apisix 런북 + .mcp.json (bunnycdn/vault/openmemory/kubernetes)
|
- 리소스 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)
|
- systemd `syn-tmux.service` (enabled, 첫 로그인 후 수동 start)
|
||||||
|
|
||||||
## 향후 확장 후보
|
## 향후 확장 후보
|
||||||
|
|||||||
Reference in New Issue
Block a user