docs: LOGBOOK + Skill04 更新 — Sprint B-1 + Architecture Review 記錄
- LOGBOOK: 新增 Sprint B-1 完成條目 + 架構Review修復清單 - Skill04 v2.6: 加入 Ansible IaC 目錄結構 + SSH MCP 安全規則 記錄首席架構師 2026-04-11 架構Review指令執行結果 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
| v2.3 | 2026-03-31 | Claude Code | **📅 Phase 21 定期報告機制規劃 (Weekly/Daily E2E/K3s Report)** |
|
||||
| v2.4 | 2026-03-31 | Claude Code | **🔧 OTEL gRPC vs HTTP 端點區分 (K8s:24317, CI/CD:24318)** |
|
||||
| v2.5 | 2026-04-09 | Claude Sonnet 4.6 | **🔴 SSH 自動修復全鏈路 — 雙主機 E2E 閉環 + 12 Bug 修復** |
|
||||
| v2.6 | 2026-04-11 | Claude Sonnet 4.6 | **Sprint B-1 Ansible IaC 骨架 + Architecture Review 安全修復** |
|
||||
|
||||
---
|
||||
|
||||
@@ -1276,3 +1277,67 @@ links = DeepLinking.get_all_links(
|
||||
❌ StrictHostKeyChecking=no(舊設定)
|
||||
✅ known_hosts Secret 已建立,改用 StrictHostKeyChecking=yes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Sprint B — Ansible Host IaC (2026-04-11)
|
||||
|
||||
> **ADR**: ADR-069 Sprint B
|
||||
> **狀態**: B-1 ✅ 骨架完成;B-2/B-3 待開工
|
||||
|
||||
### 目錄結構
|
||||
|
||||
```
|
||||
infra/ansible/
|
||||
├── inventory/
|
||||
│ ├── hosts.yml # 5 主機(110/188/120/121/112)
|
||||
│ └── group_vars/
|
||||
│ ├── all.yml # 共用變數(github_runner_count 等)
|
||||
│ ├── host_110.yml # swap/docker/keepalived BACKUP
|
||||
│ └── host_188.yml # docker/keepalived MASTER
|
||||
├── playbooks/
|
||||
│ ├── site.yml # 全站入口
|
||||
│ ├── 110-devops.yml # 110 預期狀態收斂
|
||||
│ ├── 188-ai-web.yml # 188 預期狀態收斂
|
||||
│ └── nginx-sync.yml # Nginx conf 同步(188 single source of truth)
|
||||
└── roles/
|
||||
├── nginx/
|
||||
│ ├── tasks/main.yml
|
||||
│ └── templates/188-all-sites.conf.j2
|
||||
├── docker-compose-service/tasks/main.yml
|
||||
├── swap/tasks/main.yml
|
||||
└── pm2-service/tasks/main.yml
|
||||
```
|
||||
|
||||
### 執行方式
|
||||
|
||||
```bash
|
||||
# 全站收斂
|
||||
ansible-playbook -i inventory/hosts.yml playbooks/site.yml
|
||||
|
||||
# 單主機
|
||||
ansible-playbook -i inventory/hosts.yml playbooks/110-devops.yml
|
||||
ansible-playbook -i inventory/hosts.yml playbooks/188-ai-web.yml
|
||||
|
||||
# nginx 同步(需 vault password)
|
||||
ansible-playbook -i inventory/hosts.yml playbooks/nginx-sync.yml --tags 188
|
||||
|
||||
# 乾跑
|
||||
ansible-playbook -i inventory/hosts.yml playbooks/site.yml --check
|
||||
```
|
||||
|
||||
### SSH MCP Provider 安全規則 (ADR-071 MCP-2a)
|
||||
|
||||
Architecture Review 發現的安全要求(2026-04-11):
|
||||
|
||||
1. **所有字串參數必須通過 `_validate_param()` 白名單驗證**
|
||||
- container_name/service: `[a-zA-Z0-9._-]{1,128}`
|
||||
- compose_dir: 必須以 `/opt/` 或 `/srv/` 開頭,禁止 `..`
|
||||
- domain: FQDN 白名單
|
||||
- 數值參數: int() + 上下限夾緊
|
||||
|
||||
2. **known_hosts 驗證**
|
||||
- 設定 `SSH_MCP_KNOWN_HOSTS_FILE` 環境變數指向 `ssh-keyscan` 產生的文件
|
||||
- 未設定時會 warning log,但不阻擋(內網快速啟動模式)
|
||||
|
||||
3. **群組 B 工具需 trust_score >= 0.8**(硬編碼守衛)
|
||||
|
||||
@@ -6,6 +6,28 @@
|
||||
|
||||
---
|
||||
|
||||
## 📍 當前狀態 (2026-04-11 — Sprint B-1 完成 + 架構Review修復)
|
||||
|
||||
### Sprint B-1 Ansible IaC + Architecture Review (2026-04-11)
|
||||
|
||||
| 項目 | 說明 | Commit |
|
||||
|------|------|--------|
|
||||
| B-1 Ansible IaC | inventory(5主機) + 4 playbooks + 4 roles 完整骨架 | 0139aa7 |
|
||||
| ansible-lint CI | `.gitea/workflows/ansible-lint.yml` infra/** 觸發 | 0139aa7 |
|
||||
| Architecture Review | `feature-dev:code-reviewer` 全面審查,5 項高信心問題 | — |
|
||||
| fix: command injection | ssh_provider `_validate_param()` 白名單驗證 | 2af4dff |
|
||||
| fix: known_hosts | SSH_MCP_KNOWN_HOSTS_FILE 環境變數 + warning log | 2af4dff |
|
||||
| fix: 模組副作用 | ALERT_EVENT_TYPES 移回 repository 層靜態定義 | 2af4dff |
|
||||
| fix: create_task競爭 | KM 轉換改 await + try/except,不再靜默丟失 | 2af4dff |
|
||||
| fix: ORM懶載入 | convert() 加頂層 try/except,錯誤 error log | 2af4dff |
|
||||
|
||||
**⚠️ 待首席架構師確認**: `2af4dff` 觸發橙區警告(telegram_gateway.py)
|
||||
確認後執行: `git push gitea main`
|
||||
|
||||
**架構 Review 規則**: 新建 `feedback_architecture_review_gates.md`
|
||||
|
||||
---
|
||||
|
||||
## 📍 當前狀態 (2026-04-11 夜 — ADR-071 第一批 + MCP Phase 2 全完成)
|
||||
|
||||
### ADR-071 第一批 + MCP Phase 2 (2026-04-11 深夜)
|
||||
|
||||
Reference in New Issue
Block a user