<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Infrastructure as Code on Learning Notes</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/</link><description>Recent content in Infrastructure as Code on Learning Notes</description><generator>Hugo</generator><language>zh</language><atom:link href="https://nianjiang.github.io/docs/70-CNCF/90-Iac/index.xml" rel="self" type="application/rss+xml"/><item><title>IaC Agent</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/10_IasAgent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nianjiang.github.io/docs/70-CNCF/90-Iac/10_IasAgent/</guid><description>&lt;h2 id="通过自然语言生成-infrastructure-as-code"&gt;
 通过自然语言生成 Infrastructure as Code
 &lt;a class="anchor" href="#%e9%80%9a%e8%bf%87%e8%87%aa%e7%84%b6%e8%af%ad%e8%a8%80%e7%94%9f%e6%88%90-infrastructure-as-code"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;核心场景&lt;/strong&gt;：运维工程师通过 UI 界面提交自然语言需求，后端自动生成符合项目规范的 IaC 代码并提交到 Git 仓库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;技术栈&lt;/strong&gt;：LLM + RAG（检索增强生成）+ Git + CI/CD&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="完整解决方案架构"&gt;
 完整解决方案架构
 &lt;a class="anchor" href="#%e5%ae%8c%e6%95%b4%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88%e6%9e%b6%e6%9e%84"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────┐
│ UI 界面（Web） │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 需求提交 │ │ 任务状态 │ │ 代码预览 │ │
│ │ │ │ │ │ │ │
│ │ · 选择项目 │ │ · 排队中 │ │ · 生成的 .tf │ │
│ │ · 自然语言 │ │ · 生成中 │ │ · Diff 对比 │ │
│ │ 描述需求 │ │ · 验证中 │ │ · 一键复制 │ │
│ │ · 选择环境 │ │ · 待审批 │ │ │ │
│ │ · 提交 │ │ · 已合并 │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────┬────────────────────────────────────────────┘
 │
 ▼
┌─────────────────────────────────────────────────────────────────┐
│ 后端服务（API Server） │
│ │
│ 1. 接收需求 │
│ ├─ 解析自然语言需求 │
│ ├─ 识别目标项目（新/旧） │
│ └─ 确定代码结构 │
│ │
│ 2. 仓库分析 │
│ ├─ 克隆项目仓库 │
│ ├─ 提取上下文（modules/variables/tags） │
│ └─ 向量化存储（RAG） │
│ │
│ 3. 代码生成 │
│ ├─ 检索相关代码片段 │
│ ├─ 调用 LLM 生成代码（带上下文） │
│ └─ 格式化 + 路径规划 │
│ │
│ 4. 验证与集成 │
│ ├─ terraform fmt / validate / tflint / checkov │
│ ├─ 创建 Git 分支 │
│ ├─ 提交代码 │
│ └─ 创建 Pull Request │
│ │
│ 5. 状态更新 │
│ └─ 更新 UI 任务状态 + 通知运维工程师 │
└────────────────────┬────────────────────────────────────────────┘
 │
 ▼
┌─────────────────────────────────────────────────────────────────┐
│ Git 仓库（按项目区分） │
│ │
│ project-a-infra/ project-b-infra/ new-project/ │
│ ├─ modules/ ├─ modules/ ├─ modules/ │
│ ├─ environments/ ├─ environments/ ├─ environments/ │
│ ├─ variables.tf ├─ variables.tf ├─ variables.tf │
│ └─ ... └─ ... └─ ... │
└─────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id="核心需求场景"&gt;
 核心需求场景
 &lt;a class="anchor" href="#%e6%a0%b8%e5%bf%83%e9%9c%80%e6%b1%82%e5%9c%ba%e6%99%af"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;h4 id="场景-1已有项目添加资源"&gt;
 场景 1：已有项目，添加资源
 &lt;a class="anchor" href="#%e5%9c%ba%e6%99%af-1%e5%b7%b2%e6%9c%89%e9%a1%b9%e7%9b%ae%e6%b7%bb%e5%8a%a0%e8%b5%84%e6%ba%90"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;运维工程师操作：
① UI 界面选择项目：&amp;#34;project-a&amp;#34;
② 输入需求：
 &amp;#34;为生产环境添加 Redis 集群，3 节点，启用持久化，
 使用与现有 VPC 相同的网络配置&amp;#34;
③ 选择环境：&amp;#34;production&amp;#34;
④ 点击&amp;#34;提交&amp;#34;

后端处理：
① 克隆 project-a-infra 仓库
② 分析现有结构（modules/vpc、modules/common）
③ 提取上下文（变量、标签、命名规范）
④ 生成 modules/redis/ 代码
⑤ 创建分支 feature/add-redis-cluster
⑥ 提交代码 + 创建 PR
⑦ UI 显示：&amp;#34;代码已生成，PR #42 已创建，等待审批&amp;#34;

运维工程师后续操作：
① 查看生成的代码（UI 预览）
② Review PR
③ 批准 + 合并
④ CI/CD 自动执行 terraform plan
⑤ 确认后执行 terraform apply
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="场景-2新项目创建仓库"&gt;
 场景 2：新项目，创建仓库
 &lt;a class="anchor" href="#%e5%9c%ba%e6%99%af-2%e6%96%b0%e9%a1%b9%e7%9b%ae%e5%88%9b%e5%bb%ba%e4%bb%93%e5%ba%93"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;运维工程师操作：
① UI 界面选择项目：&amp;#34;新建项目&amp;#34;
② 输入项目名称：&amp;#34;project-x&amp;#34;
③ 输入需求：
 &amp;#34;VPC + 3 层架构（web/app/db）+ EKS 集群 + RDS PostgreSQL&amp;#34;
④ 点击&amp;#34;提交&amp;#34;

后端处理：
① 从模板仓库创建 project-x-infra
② 初始化项目结构（modules/、environments/）
③ 生成所有模块代码（VPC、EKS、RDS）
④ 验证 + 提交
⑤ UI 显示：&amp;#34;项目已创建，代码已提交，PR #1 已创建&amp;#34;

运维工程师后续操作：
① 查看生成的完整代码
② Review + 合并
③ 执行 terraform apply
④ 基础设施就绪，开始使用
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id="技术实现方案"&gt;
 技术实现方案
 &lt;a class="anchor" href="#%e6%8a%80%e6%9c%af%e5%ae%9e%e7%8e%b0%e6%96%b9%e6%a1%88"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;h4 id="方案-a自研-web-应用--rag推荐"&gt;
 方案 A：自研 Web 应用 + RAG（推荐）
 &lt;a class="anchor" href="#%e6%96%b9%e6%a1%88-a%e8%87%aa%e7%a0%94-web-%e5%ba%94%e7%94%a8--rag%e6%8e%a8%e8%8d%90"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;技术栈&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>TACOS</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/11_TACOS/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nianjiang.github.io/docs/70-CNCF/90-Iac/11_TACOS/</guid><description>&lt;h3 id="tacos-terraform-automation-and-collaboration-software"&gt;
 TACOS (Terraform Automation and Collaboration Software)
 &lt;a class="anchor" href="#tacos-terraform-automation-and-collaboration-software"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TACOS&lt;/strong&gt; = &lt;strong&gt;T&lt;/strong&gt;erraform &lt;strong&gt;A&lt;/strong&gt;utomation and &lt;strong&gt;CO&lt;/strong&gt;llaboration &lt;strong&gt;S&lt;/strong&gt;oftware
专为 Terraform / OpenTofu 工作流设计的自动化与协作平台，将 CLI 工具升级为团队级基础设施管理平台。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="为什么需要-tacos"&gt;
 为什么需要 TACOS？
 &lt;a class="anchor" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81-tacos"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;团队规模增长后，纯 CLI + CI/CD 管理 Terraform 的痛点：

 ① 状态管理 → 分布式团队的状态文件存储、锁、版本控制
 ② 协作困难 → 多人修改、Plan 审查、Apply 审批流程复杂
 ③ 治理缺失 → 无法强制执行安全策略、合规检查、成本控制
 ④ 可见性差 → 缺乏&amp;#34;谁在何时对什么资源做了什么&amp;#34;的审计链
 ⑤ 漂移检测 → 云控制台手动变更后无法自动发现
 ⑥ 自助服务 → 开发者无法安全地自助创建/销毁测试环境
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="tacos-核心功能"&gt;
 TACOS 核心功能
 &lt;a class="anchor" href="#tacos-%e6%a0%b8%e5%bf%83%e5%8a%9f%e8%83%bd"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;功能&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;远程状态管理&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;安全存储 State 文件，提供锁机制防止并发修改，维护变更历史&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;VCS 集成&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;与 GitHub/GitLab/Bitbucket 集成，PR 驱动 GitOps 工作流&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;RBAC&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;细粒度权限控制（谁能在哪个环境执行 plan/apply）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;策略即代码&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;集成 OPA / Checkov 等，在 Plan 阶段自动拦截不合规变更&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;自动化运行&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;VCS 事件或定时触发 terraform plan/apply，减少人工错误&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;漂移检测&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;持续对比实际基础设施与代码，发现差异后告警或自动修复&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;私有模块注册表&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;集中管理可复用的 Terraform 模块，促进标准化和自助服务&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;私有 Provider 注册表&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;托管自定义/内部审批的 Provider，带 GPG 签名和审计&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;成本估算&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;集成 Infracost 等工具，在 Plan 阶段预估费用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;审计日志&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;完整记录所有 Terraform 活动，支持追溯和合规&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;自定义 Hook&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;在 Plan/Apply 前后注入自定义脚本或集成外部工具&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="tacos-产品全景2026"&gt;
 TACOS 产品全景（2026）
 &lt;a class="anchor" href="#tacos-%e4%ba%a7%e5%93%81%e5%85%a8%e6%99%af2026"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;产品&lt;/th&gt;
 &lt;th&gt;类型&lt;/th&gt;
 &lt;th&gt;支持 IaC 工具&lt;/th&gt;
 &lt;th&gt;定价模式&lt;/th&gt;
 &lt;th&gt;特点&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://developer.hashicorp.com/terraform/cloud"&gt;Terraform Cloud / Enterprise&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;商业（HashiCorp 官方）&lt;/td&gt;
 &lt;td&gt;Terraform&lt;/td&gt;
 &lt;td&gt;按用量（2026.3 起取消免费层）&lt;/td&gt;
 &lt;td&gt;官方产品，HCP 托管&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://scalr.com/"&gt;Scalr&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;商业（Pure-play）&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu&lt;/td&gt;
 &lt;td&gt;按 Run 计费（Free: 50 runs/月）&lt;/td&gt;
 &lt;td&gt;纯 Terraform/OpenTofu，层级 RBAC 继承，BYOK 加密&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://spacelift.io/"&gt;Spacelift&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;商业（Multi-IaC）&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu, Pulumi, CloudFormation, Ansible, K8s&lt;/td&gt;
 &lt;td&gt;按 Worker 计费&lt;/td&gt;
 &lt;td&gt;最可定制，自定义 Runner 镜像，OPA 策略最灵活&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://www.env0.com/"&gt;env0&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;商业（Multi-IaC）&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu, Pulumi, Terragrunt, Helm, K8s&lt;/td&gt;
 &lt;td&gt;按环境/Apply 计费（Free: 250 runs/月）&lt;/td&gt;
 &lt;td&gt;真实成本关联，环境 TTL 自动销毁&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://terrakube.org/"&gt;Terrakube&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/terrakube-io/terrakube"&gt;开源-Github&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu&lt;/td&gt;
 &lt;td&gt;免费（自托管）&lt;/td&gt;
 &lt;td&gt;开源 TACOS，私有模块/Provider 注册表，VCS 集成，自定义工作流（OPA/Infracost），RBAC，远程后端&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/mattrobinsonsre/terrapod"&gt;Terrapod&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/mattrobinsonsre/terrapod"&gt;开源-Github&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu&lt;/td&gt;
 &lt;td&gt;免费（自托管）&lt;/td&gt;
 &lt;td&gt;Terraform Enterprise 的开源替代，提供协作、治理（RBAC + OPA/Rego）、状态管理和 Web UI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://www.runatlantis.io/"&gt;Atlantis&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/runatlantis/atlantis"&gt;开源-Github&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Terraform&lt;/td&gt;
 &lt;td&gt;免费（自托管）&lt;/td&gt;
 &lt;td&gt;PR 驱动工作流的先驱，需自行搭建管理平面&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://digger.dev/"&gt;Digger / OpenTaco&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/diggerhq/digger"&gt;开源-Github&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu&lt;/td&gt;
 &lt;td&gt;免费&lt;/td&gt;
 &lt;td&gt;复用现有 CI（GitHub Actions），不额外运行计算&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://stategraph.com/"&gt;stategraph / Terrateam&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/stategraph/stategraph"&gt;开源-Github&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu, CDKTF, Terragrunt, Pulumi&lt;/td&gt;
 &lt;td&gt;免费&lt;/td&gt;
 &lt;td&gt;GitOps 编排，与 GitHub 深度集成&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://terramate.io/"&gt;Terramate&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/terramate-io/terramate"&gt;开源-Github&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Terraform, OpenTofu, Terragrunt, K8s&lt;/td&gt;
 &lt;td&gt;免费&lt;/td&gt;
 &lt;td&gt;编排 + 代码生成引擎，运行在现有 CI 之上&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;
 &lt;a href="https://nianjiang.github.io/"&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="pure-play-vs-multi-iac"&gt;
 Pure-play vs Multi-IaC
 &lt;a class="anchor" href="#pure-play-vs-multi-iac"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Pure-play（仅 Terraform/OpenTofu）:
 Scalr
 └─ 优势：单一状态模型，可深度报告资源/模块/Provider/版本/漂移
 └─ 适合：已统一使用 Terraform/OpenTofu 的团队

Multi-IaC（支持多种 IaC 工具）:
 Spacelift / env0
 └─ 优势：统一管控 Terraform + Pulumi + CloudFormation + Ansible
 └─ 适合：多团队使用不同 IaC 工具的组织
 └─ 注意：抽象层越厚，差异越容易泄漏（Leaky Abstractions）
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="tacos-vs-cicd-自建方案"&gt;
 TACOS vs CI/CD 自建方案
 &lt;a class="anchor" href="#tacos-vs-cicd-%e8%87%aa%e5%bb%ba%e6%96%b9%e6%a1%88"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;CI/CD 自建（GitHub Actions 等）&lt;/th&gt;
 &lt;th&gt;TACOS 平台&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;状态锁&lt;/td&gt;
 &lt;td&gt;需自行实现&lt;/td&gt;
 &lt;td&gt;✅ 内置&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;策略执行&lt;/td&gt;
 &lt;td&gt;需手动集成 OPA&lt;/td&gt;
 &lt;td&gt;✅ 内置 OPA/Checkov&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;漂移检测&lt;/td&gt;
 &lt;td&gt;需自建定时任务&lt;/td&gt;
 &lt;td&gt;✅ 内置持续检测&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RBAC&lt;/td&gt;
 &lt;td&gt;需自行设计&lt;/td&gt;
 &lt;td&gt;✅ 细粒度内置&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;私有注册表&lt;/td&gt;
 &lt;td&gt;需额外部署&lt;/td&gt;
 &lt;td&gt;✅ 内置&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;成本估算&lt;/td&gt;
 &lt;td&gt;需集成 Infracost&lt;/td&gt;
 &lt;td&gt;✅ 内置&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;审计链&lt;/td&gt;
 &lt;td&gt;需自行拼接&lt;/td&gt;
 &lt;td&gt;✅ 完整内置&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;维护成本&lt;/td&gt;
 &lt;td&gt;高（随规模增长）&lt;/td&gt;
 &lt;td&gt;低（平台托管）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;灵活性&lt;/td&gt;
 &lt;td&gt;极高&lt;/td&gt;
 &lt;td&gt;中等&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;初期成本&lt;/td&gt;
 &lt;td&gt;低&lt;/td&gt;
 &lt;td&gt;中-高&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="是否需要-tacos决策树"&gt;
 是否需要 TACOS？决策树
 &lt;a class="anchor" href="#%e6%98%af%e5%90%a6%e9%9c%80%e8%a6%81-tacos%e5%86%b3%e7%ad%96%e6%a0%91"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;你是个人开发者或 2-3 人团队？
 └─ 是 → CLI + 远程后端 即可，不需要 TACOS

你使用 GitHub Actions 就能满足需求？
 └─ 是 → 继续用 CI/CD，暂不需要

你有多个团队 + 多个环境 + 合规要求？
 └─ 是 → 需要 TACOS

你想要 PR 驱动但不想引入商业平台？
 └─ 是 → Atlantis（开源先驱）

你同时使用 Terraform + Pulumi + CloudFormation？
 └─ 是 → Multi-IaC TACOS（Spacelift / env0）
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="选型检查清单"&gt;
 选型检查清单
 &lt;a class="anchor" href="#%e9%80%89%e5%9e%8b%e6%a3%80%e6%9f%a5%e6%b8%85%e5%8d%95"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 并发数和 Agent 配额是否满足需求？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 状态存储位置？能否使用自己的 Bucket？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; RBAC 粒度？是否支持自定义角色？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 是否支持层级继承（变量/凭证/模块从上层传递到 Workspace）？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 能否通过 CLI 设置 TACOS 为远程后端？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 是否专注 Terraform/OpenTofu，还是通用 CI/CD？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 集成便捷性（Slack/Datadog 等，API Key 即用还是需要复杂插件）？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 是否有模块/Provider/版本使用报告？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; GitOps 工作流中是否将 Plan 详情回写到 PR？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 是否支持私有 Provider 注册表（不仅是模块注册表）？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 是否支持 BYOK（自带加密密钥）？&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 计费单位是什么？（Run / Worker / 并发数）—— 按实际 Run 量对比&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="参考资源"&gt;
 参考资源
 &lt;a class="anchor" href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%ba%90"&gt;#&lt;/a&gt;
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
 &lt;a href="https://scalr.com/learning-center/what-is-a-terraform-taco"&gt;What Are Terraform TACOs? - Scalr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
 &lt;a href="https://www.upbound.io/blog/infrastructure-as-code-with-tacos"&gt;Spice Up Your IaC with TACOS - Upbound&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
 &lt;a href="https://www.youtube.com/watch?v=4MLBpBqZmpM"&gt;TACOS Demo Day (Video)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
 &lt;a href="https://terramate.io/rethinking-iac/i-love-tacos-so-much-or-at-least-i-thought-i-did/"&gt;I love TACOS So Much - Terramate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="reference"&gt;
 Reference
 &lt;a class="anchor" href="#reference"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;
 &lt;a href="https://nianjiang.github.io/"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Terrapod</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/92_terrapod/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nianjiang.github.io/docs/70-CNCF/90-Iac/92_terrapod/</guid><description>&lt;h2 id="terrapod"&gt;
 Terrapod
 &lt;a class="anchor" href="#terrapod"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Terrapod&lt;/strong&gt; 是一个免费、开源、自托管的 &lt;strong&gt;TACOS&lt;/strong&gt;（Terraform Automation and Collaboration Software）平台，定位为 Terraform Enterprise / Terraform Cloud 的开源替代品。
它不是 Terraform 或 OpenTofu 的 fork，而是它们的&lt;strong&gt;编排层&lt;/strong&gt;——将 CLI 工具升级为团队级基础设施管理平台。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;属性&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Terraform Enterprise / HCP Terraform 的开源替代&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;协议&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;MPL-2.0（与 OpenTofu 相同，文件级 copyleft，内部使用无披露义务）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;技术栈&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;FastAPI (Python) + Next.js (前端) + PostgreSQL + Redis + Go (工具链)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;部署方式&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Helm Chart on Kubernetes（单节点 k3s 即可启动）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;支持引擎&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Terraform、OpenTofu（推荐）、Terragrunt&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;仓库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/mattrobinsonsre/terrapod"&gt;github.com/mattrobinsonsre/terrapod&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="核心架构"&gt;
 核心架构
 &lt;a class="anchor" href="#%e6%a0%b8%e5%bf%83%e6%9e%b6%e6%9e%84"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│ Browser / CLI │
└──────────────────────┬──────────────────────────────────┘
 │ HTTPS
 ▼
┌─────────────────────────────────────────────────────────┐
│ Terrapod 控制平面 │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ │
│ │ Next.js BFF │────▶│ FastAPI API │ │
│ │ (Web UI + │ │ (多副本，无 leader election) │ │
│ │ 反向代理) │ │ │ │
│ └──────────────┘ └──────────────────────────────┘ │
│ │ │ │ │
└────────────────────────────┼────┼────┼───────────────────┘
 │ │ │
 ┌──────────────┘ │ └──────────────┐
 ▼ ▼ ▼
 ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
 │ PostgreSQL │ │ Redis │ │ Object Storage │
 │ (状态+元数据) │ │ (会话/锁/事件)│ │ (状态/计划/日志) │
 └──────────────┘ └──────────────┘ └──────────────────┘
 ▲
 │ 数据不离开你的边界
 │
┌─────────────┴───────────────────────────────────────────┐
│ 执行集群（可在任意网络） │
│ │
│ ┌────────────────┐ ┌────────────────────────────┐ │
│ │ Runner Listener │────▶│ 临时 K8s Job │ │
│ │ (出站 SSE 连接) │ │ (terraform / tofu 执行) │ │
│ └────────────────┘ └────────────────────────────┘ │
│ │
│ 执行集群 → 控制平面（出站），控制平面 ✗ → 执行集群 │
└──────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;关键设计&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>Terramate</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/93_terramate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nianjiang.github.io/docs/70-CNCF/90-Iac/93_terramate/</guid><description>&lt;h2 id="terramate"&gt;
 Terramate
 &lt;a class="anchor" href="#terramate"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Terramate&lt;/strong&gt; 是一个开源的 IaC &lt;strong&gt;编排与代码生成引擎&lt;/strong&gt;，用于管理 Terraform / OpenTofu / Terragrunt 的大规模代码库。
它不是 TACOS，也不是 Terraform 的替代——它&lt;strong&gt;运行在你现有的 CI/CD 之上&lt;/strong&gt;，把巨型 Terraform 仓库拆成可独立部署的 Stack，并提供变更检测、并行执行、DRY 代码生成。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;属性&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;定位&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;IaC 编排 + 代码生成引擎（运行在现有 CI 之上）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;协议&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;MPL-2.0（文件级 copyleft，内部使用无披露义务）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;语言&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Go（单二进制 CLI）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;支持引擎&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Terraform、OpenTofu、Terragrunt（也可编排 Helm、K8s、CloudFormation 等任意命令）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;部署形态&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CLI（本地 / CI 中运行）+ 可选 Terramate Cloud（SaaS 观测平面）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;仓库&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;
 &lt;a href="https://github.com/terramate-io/terramate"&gt;github.com/terramate-io/terramate&lt;/a&gt;（3.6k+ stars）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id="1-核心架构"&gt;
 1. 核心架构
 &lt;a class="anchor" href="#1-%e6%a0%b8%e5%bf%83%e6%9e%b6%e6%9e%84"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌───────────────────────────────────────────────────────────────┐
│ Git 仓库（= Terramate 项目） │
│ │
│ ┌───────────────── root.tm.hcl（可选，全局配置/Globals） │
│ │ │
│ │ stacks/ │
│ │ ├── alice/ │
│ │ │ ├── stack.tm.hcl ← Stack 定义（name/id/tags） │
│ │ │ ├── main.tf ← 原生 Terraform 代码 │
│ │ │ └── _terramate_generated_backend.tf ← 生成的代码 │
│ │ └── bob/ │
│ │ └── ... │
└──┼─────────────────────────────────────────────────────────────┘
 │
 ▼
┌──────────────────┐ 变更检测（对比 git commits） ┌──────────────────┐
│ terramate CLI │ ───────────────────────────────▶ │ Git │
│ │ └──────────────────┘
│ · create/list │ 编排执行（依赖感知 + 并行）
│ · generate │ ───────────────────────────────▶ terraform / tofu
│ · run │ （init/plan/apply）
│ · list --changed│
└────────┬─────────┘
 │ 可选：同步 drift / deployment / insights
 ▼
┌──────────────────┐
│ Terramate Cloud │ 观测平面：Dashboard、漂移检测、告警、
│ （免费个人版） │ PR 预览、DORA 指标、资产清单
└──────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;关键设计&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>Crucible</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/94_crucible/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nianjiang.github.io/docs/70-CNCF/90-Iac/94_crucible/</guid><description>&lt;h1 id="crucible-iap-学习笔记"&gt;
 Crucible IAP 学习笔记
 &lt;a class="anchor" href="#crucible-iap-%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0"&gt;#&lt;/a&gt;
&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Resouces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 &lt;a href="https://www.forgedinfeatherstechnology.com/crucible-iap"&gt;https://www.forgedinfeatherstechnology.com/crucible-iap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
 &lt;a href="https://github.com/ponack/crucible-iap"&gt;https://github.com/ponack/crucible-iap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="一项目定位crucible-是什么"&gt;
 一、项目定位：Crucible 是什么
 &lt;a class="anchor" href="#%e4%b8%80%e9%a1%b9%e7%9b%ae%e5%ae%9a%e4%bd%8dcrucible-%e6%98%af%e4%bb%80%e4%b9%88"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Crucible IAP（Infrastructure Automation Platform，基础设施自动化平台）&lt;/strong&gt; 是一个 &lt;strong&gt;自托管（self-hosted）、隐私优先&lt;/strong&gt; 的 IaC 编排平台，定位为 &lt;strong&gt;Spacelift / Terraform Cloud 的开源替代品&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一句话理解它的工作流：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;推送代码 → Crucible 自动执行 plan → 人工/策略审批 → apply
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;它解决的核心痛点：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;云端 IaC 平台的问题&lt;/th&gt;
 &lt;th&gt;Crucible 的回答&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;按资源/按运行/按席位收费，规模越大越贵&lt;/td&gt;
 &lt;td&gt;自托管，成本固定，无 per-run / per-resource 费用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;plan 输出、state 文件、密钥经过第三方基础设施&lt;/td&gt;
 &lt;td&gt;0 第三方暴露，数据全部留在自己的环境&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SaaS 黑盒，不可控&lt;/td&gt;
 &lt;td&gt;你的基础设施你做主，AGPL-3.0 开源&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;支持的 IaC 工具：&lt;strong&gt;OpenTofu、Terraform、Terragrunt、Ansible、Pulumi&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二核心概念先记住这-6-个词"&gt;
 二、核心概念（先记住这 6 个词）
 &lt;a class="anchor" href="#%e4%ba%8c%e6%a0%b8%e5%bf%83%e6%a6%82%e5%bf%b5%e5%85%88%e8%ae%b0%e4%bd%8f%e8%bf%99-6-%e4%b8%aa%e8%af%8d"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;概念&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Stack（栈）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;管理的基本单元：一个 Git 仓库 + 分支 + 工作目录 + 工具 + 运行行为的组合。类似 Spacelift 的 Stack、TFC 的 Workspace&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Run（运行）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;一次完整的执行实例，状态机：&lt;code&gt;queued → planning → unconfirmed → applying → finished&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Policy（策略）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;OPA/Rego 编写的守门规则，在 plan/apply 前强制评估，deny 则拦截&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Drift（漂移）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;实际基础设施与声明的 state 不一致；Crucible 可定时检测甚至自动修复&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Blueprint（蓝图）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;参数化的自服务模板：平台团队发布表单，应用团队填表即部署，不用碰 IaC&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Variable Set（变量集）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;一组命名的环境变量，加密存储，可复用挂载到多个 Stack&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="run-的类型"&gt;
 Run 的类型
 &lt;a class="anchor" href="#run-%e7%9a%84%e7%b1%bb%e5%9e%8b"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;触发方式&lt;/th&gt;
 &lt;th&gt;类型&lt;/th&gt;
 &lt;th&gt;行为&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;推送到跟踪分支&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;tracked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;plan → 等确认 → apply&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;推送到跟踪分支（auto_apply=true）&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;tracked&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;策略通过即自动 apply&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pull Request / Merge Request&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;proposed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;仅 plan，结果回帖 PR，不 apply&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;手动触发（UI/API）&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;tracked&lt;/code&gt; / &lt;code&gt;proposed&lt;/code&gt; / &lt;code&gt;destroy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;按配置执行&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;漂移检测&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;proposed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;仅 plan，发现 diff 告警&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="三整体架构"&gt;
 三、整体架构
 &lt;a class="anchor" href="#%e4%b8%89%e6%95%b4%e4%bd%93%e6%9e%b6%e6%9e%84"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;GitHub / GitLab / Bitbucket / Azure DevOps webhook
 │
 ▼
Reverse proxy (Caddy bundled, or nginx / Traefik / your own)
 │
 ├── /auth, /api, /health → Crucible API (Go + Echo)
 │ │
 │ ┌──────────┼──────────────┐
 │ ▼ ▼ ▼
 │ PostgreSQL MinIO OPA engine
 │ (DB + queue (state, (embedded,
 │ + audit log) plans, Rego)
 │ logs)
 │ │
 │ River job queue (PostgreSQL)
 │ │
 │ Crucible Worker (separate container)
 │ (no public ports, has Docker socket)
 │ │
 │ Docker SDK → ephemeral runner container
 │ (tofu / terraform / ansible / pulumi)
 │
 │ — or —
 │ crucible-agent (external host, any cloud / on-prem)
 │ polls /api/v1/agent/claim → runs same Docker images
 │ streams logs back → reports outcome
 │
 └── /* → Crucible UI (SvelteKit SSR)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;架构要点（学习时重点理解）：&lt;/p&gt;</description></item><item><title>RAG Framework for IaC Agent</title><link>https://nianjiang.github.io/docs/70-CNCF/90-Iac/99_RAG/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://nianjiang.github.io/docs/70-CNCF/90-Iac/99_RAG/</guid><description>&lt;h2 id="开源-llm--rag-框架选型面向-iac-agent-开发"&gt;
 开源 LLM + RAG 框架选型：面向 IaC Agent 开发
 &lt;a class="anchor" href="#%e5%bc%80%e6%ba%90-llm--rag-%e6%a1%86%e6%9e%b6%e9%80%89%e5%9e%8b%e9%9d%a2%e5%90%91-iac-agent-%e5%bc%80%e5%8f%91"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：选择开源 RAG 框架作为基座，二次开发出 &lt;strong&gt;IaC Agent&lt;/strong&gt;（自然语言生成基础设施代码）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心需求&lt;/strong&gt;：开源 + UI 界面 + 方便二次开发 + 适合构建 IaC Agent&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="iac-agent-对-rag-框架的特殊要求"&gt;
 IaC Agent 对 RAG 框架的特殊要求
 &lt;a class="anchor" href="#iac-agent-%e5%af%b9-rag-%e6%a1%86%e6%9e%b6%e7%9a%84%e7%89%b9%e6%ae%8a%e8%a6%81%e6%b1%82"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;IaC Agent 与普通知识库问答不同，对 RAG 框架有更高的技术要求：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;IaC Agent 工作流程：
┌──────────────────────────────────────────────────────────────┐
│ 1. 用户在 UI 输入自然语言需求 │
│ &amp;#34;为 project-a 创建一个 4C8G 的 ECS 实例，部署在 cn-shanghai&amp;#34; │
└───────────────────────┬──────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────┐
│ 2. RAG 检索：从已有 IaC 代码库中检索相似代码作为上下文 │
│ ├─ 检索同项目的已有资源定义（参考命名、标签、模块结构） │
│ ├─ 检索类似资源的代码模板（ECS / RDS / VPC 等） │
│ └─ 检索 Terraform Provider 文档和最佳实践 │
└───────────────────────┬──────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────┐
│ 3. LLM 生成 IaC 代码（带 RAG 上下文增强） │
│ ├─ 参考已有代码风格 │
│ ├─ 生成 Terraform / OpenTofu / Pulumi 代码 │
│ └─ 确保代码符合项目规范（命名、标签、模块划分） │
└───────────────────────┬──────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────┐
│ 4. 自定义工具调用（关键！） │
│ ├─ 调用 terraform fmt / validate 验证代码 │
│ ├─ 调用 tflint / checkov 做安全和规范检查 │
│ ├─ 调用 Git API（创建分支、提交代码、创建 PR） │
│ ├─ 调用仓库分析工具（解析已有目录结构） │
│ └─ 调用云 API（验证资源配额、检查冲突） │
└───────────────────────┬──────────────────────────────────────┘
 │
 ▼
┌──────────────────────────────────────────────────────────────┐
│ 5. 结果返回 UI │
│ ├─ 生成的代码（可预览、可编辑） │
│ ├─ PR 链接 │
│ └─ 验证报告（通过/失败/警告） │
└──────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;因此，IaC Agent 对 RAG 框架的核心要求是&lt;/strong&gt;：&lt;/p&gt;</description></item></channel></rss>