article
README
🚀 Terraform Ingest
Terraform Ingest 是一款 Terraform RAG 数据摄取引擎,它可以接收一个包含 Terraform Git 仓库源的 YAML 文件,利用现有凭证将这些仓库下载到本地,为你指定的分支或标签版本创建关于其用途、输入、输出和提供者的 JSON 摘要,并将这些摘要嵌入到向量数据库中,以便进行相似性搜索。它还提供了易于使用的命令行界面(CLI)、API 或 MCP 服务器。
✨ 主要特性
- 📥 多仓库摄取:通过单个 YAML 配置文件处理多个 Terraform 仓库。
- 🔄 自动导入:从 GitHub 组织和 GitLab 组导入仓库(即将支持 Bitbucket)。
- 🔍 全面分析:提取变量、输出、提供者、模块和描述信息。
- 🏷️ 分支和标签支持:分析你指定的分支和 Git 标签。
- 🔌 双接口:既可以作为命令行工具(Click)使用,也可以作为 REST API 服务(FastAPI)使用。
- 🤖 MCP 集成:提供 MCP 服务,使 AI 代理能够通过 STDIO、SSE 或可流式传输的 HTTP 访问已摄取的模块。
- 📊 JSON 输出:生成结构化的 JSON 摘要,可直接用于 RAG 摄取。
- 🔐 凭证支持:使用现有的 Git 凭证访问私有仓库。
- 🧠 向量数据库嵌入:支持使用 ChromaDB、OpenAI、Claude 或 sentence-transformers 进行语义搜索。
更多文档请参考 这里。
如果你只想快速了解如何将其作为 MCP 服务器使用(以及一些示例),请查看 这里。
一个包含大量自定义模块的示例项目仓库可以在 这里 找到。
📦 安装指南
本应用程序可以使用 uv 或 Docker 在本地运行。
⚠️ 重要提示
uv是延迟加载一些大型依赖项所必需的。
使用 uv 安装
uv tool install terraform-ingest
# 创建配置文件
uv run terraform-ingest init config.yaml
# 从 GitHub 组织导入仓库
uv run terraform-ingest import github --org terraform-aws-modules --terraform-only
# 从 GitLab 组导入仓库
uv run terraform-ingest import gitlab --group mygroup --recursive --terraform-only
# 更新 config.yaml 文件,包含 Terraform 模块信息和 MCP 配置,然后进行初始摄取
uv run terraform-ingest ingest config.yaml
# 运行快速 CLI 搜索进行测试
uv run terraform-ingest search "vpc module for aws"
使用 Docker 安装
docker pull ghcr.io/zloeber/terraform-ingest:latest
# 使用卷挂载以实现数据持久化,从本地 config.yaml 文件摄取模块
docker run -v $(pwd)/repos:/app/repos -v $(pwd)/output:/app/output -v $(pwd)/config.yaml:/app/config.yaml ghcr.io/zloeber/terraform-ingest:latest ingest /app/config.yaml
# 作为 MCP 服务器运行
docker run -v $(pwd)/repos:/app/repos -v $(pwd)/output:/app/output -v $(pwd)/config.yaml:/app/config.yaml -p 8000:8000 ghcr.io/zloeber/terraform-ingest:latest mcp -c /app/config.yaml
# 搜索模块并获取第一个结果,显示所有详细信息
terraform-ingest search "vpc module for aws" -l 1 -j | jq -r '.results[0].id' | xargs -I {} terraform-ingest index get {}
📄 许可证
本项目采用 MIT 许可证。
🤝 贡献
欢迎贡献代码!请随时提交拉取请求。
微信扫一扫