Skip to content

papysans/TerraformWithAgent

Repository files navigation

TerraformWithAgent

🤖 AI 驱动的云资源管理工具 - 通过对话描述需求,自动生成 Terraform 配置并创建云资源

Python FastAPI Next.js License


✨ 功能特性

  • 🤖 对话式交互 - 与 Deepseek LLM 对话描述项目需求,AI 主动追问关键信息
  • 📋 智能方案生成 - 5 个专业 Agent 协作分析(需求、资源查询、架构、成本、安全)
  • 多级审核流程 - 架构师技术审核 + 管理员成本审核,确保方案质量
  • 🚀 自动化部署 - 审批通过后自动执行 Terraform,实时查看部署日志
  • 🔍 资源智能推荐 - 自动查询可用区和实例类型,推荐最优配置
  • 🛡️ 安全合规检查 - 自动检测安全风险,提供加固建议

🏗️ 技术架构

后端技术栈

核心框架:    FastAPI (Python 3.11+)
数据库:      SQLite (MVP) → PostgreSQL (生产)
ORM:         SQLAlchemy 2.0
认证:        JWT + bcrypt
LLM:         Deepseek API (OpenAI 兼容)
Agent 框架:  LangChain + LangGraph
云平台:      阿里云 (可扩展多云)
IaC:         Terraform 1.5.7
部署:        Docker + Docker Compose

前端技术栈

框架:        Next.js 14 + React 18
UI 组件库:   Tailwind CSS + Headless UI
状态管理:    React Hooks + Context API
类型系统:    TypeScript 5.0+
HTTP 客户端: Fetch API
路由:        Next.js App Router

Agent 工作流

用户需求 → RequirementAgent (需求分析)
         → ResourceQueryAgent (资源查询)
         → ArchitectureAgent (架构设计)
         → CostAgent (成本估算)
         → SecurityAgent (安全检查)
         → TerraformAgent (代码生成)
         → Terraform Validate (验证)
         → 人工审核
         → Terraform Apply (部署)

🚀 快速开始

前置要求

  • Python 3.11+ (推荐使用 pyenv 管理版本)
  • Node.js 18+
  • Terraform 1.5+
  • 阿里云账号(用于实际部署)

1. 克隆项目

git clone https://github.com/your-org/TerraformWithAgent.git
cd TerraformWithAgent

2. 配置环境变量

cp .env.example .env

编辑 .env 文件,填入必要配置:

# LLM 配置(必需)
DEEPSEEK_API_KEY=sk-your-deepseek-api-key

# 阿里云配置(实际部署时需要)
ALICLOUD_ACCESS_KEY=your-access-key
ALICLOUD_SECRET_KEY=your-secret-key
ALICLOUD_REGION=cn-shenzhen

# 数据库配置
DATABASE_URL=sqlite:///./app.db

# JWT 配置
SECRET_KEY=your-secret-key-here

3. 启动服务

方式 1: Python 脚本(推荐)

# 初始化项目(首次运行)
python3 setup.sh

# 启动后端
python3 run.py backend

# 启动前端(新终端)
python3 run.py frontend

方式 2: Makefile

# 查看所有命令
make help

# 初始化项目
make setup

# 启动后端
make backend

# 启动前端
make frontend

方式 3: Docker Compose

# 启动所有服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

4. 访问服务

5. 测试账号

系统自动创建以下测试账号:

角色 用户名 密码 权限
管理员 admin admin123 成本审核、执行、用户管理
架构师 architect architect123 技术审核
客户 customer customer123 对话、查看方案

🧪 运行测试

端到端测试

完整测试从用户需求到阿里云资源创建的全流程:

# 运行完整 E2E 测试(会创建真实资源)
python3 run.py test backend/tests/integration/test_full_e2e_with_apply.py

# 运行到验证阶段(不创建资源)
python3 run.py test backend/tests/integration/test_e2e_to_validate.py

Agent 单元测试

# 测试需求分析 Agent
python3 run.py test backend/tests/agents/test_requirement_agent.py

# 测试架构设计 Agent
python3 run.py test backend/tests/agents/test_architecture_agent.py

# 测试成本分析 Agent
python3 run.py test backend/tests/agents/test_cost_agent.py

# 测试安全检查 Agent
python3 run.py test backend/tests/agents/test_security_agent.py

# 测试 Terraform 生成 Agent
python3 run.py test backend/tests/agents/test_terraform_agent.py

清理测试资源

如果测试创建了阿里云资源,使用清理脚本删除:

python3 backend/scripts/cleanup_resources.py

🛠️ 开发指南

后端开发

# 启动后端(自动重载)
python3 run.py backend

# 查看日志
tail -f backend/logs/app.log

# 运行特定测试
python3 run.py test backend/tests/agents/test_requirement_agent.py

前端开发

# 启动前端(自动重载)
python3 run.py frontend

# 构建生产版本
cd frontend && npm run build

# 启动生产服务器
cd frontend && npm start

添加新的 Agent

  1. backend/services/agents/ 创建新 Agent 文件
  2. 继承 BaseAgentBaseStreamingAgent
  3. 实现 _execute() 方法
  4. backend/services/workflows/plan_generation.py 中注册
  5. 添加对应的测试文件

修改工作流

编辑 backend/services/workflows/plan_generation.py

  • 使用 LangGraph 定义节点和边
  • 支持条件分支和循环
  • 可以添加验证节点

📚 文档

用户文档

开发文档

已实现功能

Kiro AI 指南

🎯 项目状态

✅ 已完成功能

  • 后端 FastAPI 框架搭建
  • 用户认证系统(JWT + bcrypt)
  • 5 个专业 Agent 实现
    • RequirementAgent - 需求分析
    • ResourceQueryAgent - 资源查询
    • ArchitectureAgent - 架构设计
    • CostAgent - 成本估算
    • SecurityAgent - 安全检查
    • TerraformAgent - 代码生成
  • LangGraph 工作流编排
  • Terraform 执行引擎
  • Terraform 验证节点
  • 端到端测试(需求 → 部署)
  • 资源清理脚本
  • API 文档(Swagger UI)
  • 多种启动方式(Python/Make/Shell/Docker)

🚧 进行中

  • CostAgent 价格查询优化
    • 集成阿里云 BSS API
    • 实现 PriceQueryService
    • 提高成本估算准确性(当前基于 LLM 估算)

📋 待开发功能

前端开发(阶段 19-21)

基础框架

  • Next.js 14 项目初始化
  • Tailwind CSS + TypeScript 配置
  • 基础 UI 组件库(Button, Input, Card, Modal, Toast, Loading)
  • Layout 组件(Header, Sidebar, Footer)
  • API 客户端封装(请求/响应拦截器)

认证系统

  • 登录页面
  • 注册页面
  • Token 管理
  • 路由守卫

核心功能

  • 对话界面(聊天式交互、消息气泡、流式输出)
  • 方案展示(架构图、成本估算、安全审计、Terraform 代码预览)
  • 审核流程(审核列表、审核详情、审核操作)
  • Terraform 执行监控(执行状态、实时日志、资源状态表格)

用户体验优化

  • 响应式设计
  • 加载状态优化
  • 错误提示优化
  • 动画效果
  • 对话历史查看
  • 方案收藏和分享
  • 导出功能

API 路由完善

  • 对话管理接口(创建对话、发送消息、生成方案)
  • 审核流程接口(待审核列表、技术审核、成本审核)
  • Terraform 执行接口(plan、apply、日志查看)
  • 用户管理接口(用户列表、角色管理)

数据库模型完善

  • 对话记录(Conversation, Message)
  • 资源方案(ResourcePlan)
  • 审核记录(Review)
  • 执行日志(TerraformRun)

部署和运维(阶段 22)

  • Docker 容器化(后端、前端)
  • docker-compose.yml 完善
  • CI/CD 配置(GitHub Actions)
  • 自动测试、构建、部署
  • 日志收集和性能监控
  • 错误追踪和告警配置

可选优化功能(阶段 23)

  • 价格查询 API 集成(提高成本估算准确性 0.75 → 0.95+)
  • 长上下文优化(拆分 TerraformAgent,支持更复杂架构)
  • 多云支持(AWS、Azure、GCP 适配器)
  • Terraform State 远程存储(阿里云 OSS)
  • 方案版本管理
  • 审核意见和修改建议
  • 资源成本追踪
  • 告警和通知系统
  • SSO 单点登录
  • 权限细粒度控制
  • 审计日志

🤝 贡献指南

欢迎贡献代码、报告问题或提出建议!

开发流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • Python: 遵循 PEP 8
  • TypeScript: 遵循 ESLint 配置
  • 提交信息: 使用语义化提交(Conventional Commits)

📄 License

MIT License - 详见 LICENSE 文件

👥 团队

TerraformWithAgent 开发团队

📞 联系方式


最后更新: 2026-01-23

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors