From 66fa3ec2ae7db229914ec130a70e6ff0e94b6ef0 Mon Sep 17 00:00:00 2001 From: kappa Date: Thu, 9 Apr 2026 17:20:04 +0900 Subject: [PATCH] =?UTF-8?q?ops-agents:=20heimdall=20=EC=9B=8C=ED=81=AC?= =?UTF-8?q?=EC=8A=A4=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=A0=88=EB=B2=A8=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=20=EB=B0=98=EC=98=81=20+=20=EA=B3=B5?= =?UTF-8?q?=ED=86=B5=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ops-agents/overview.md | 46 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/ops-agents/overview.md b/ops-agents/overview.md index b5ea3ea..7081b6e 100644 --- a/ops-agents/overview.md +++ b/ops-agents/overview.md @@ -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//CLAUDE.md` | workspace | 에이전트 persona / 범위 / 프로토콜 | +| `/home/kaffa//.mcp.json` | workspace | 프로젝트 MCP 서버 목록 | +| `/home/kaffa//{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) ## 향후 확장 후보