Terraform Plan 可视化器

解析 Terraform plan 的 JSON 或文本输出,对资源变化分类,并在 apply 前展示依赖导向的摘要报告

粘贴通过 "terraform show -json" 导出的 Terraform plan JSON,或直接粘贴文本 plan。工具会把资源分成 create、update、delete、replace、read 和 no-op,并按 provider 与依赖关系做摘要。

使用说明:

  • Terraform Plan 输入:粘贴原始 plan JSON 或文本
  • Plan 文件:上传保存好的 plan 文件
  • 输入格式:选 auto 时自动识别 JSON 或文本
  • 显示依赖图:为前几组依赖边绘制一个轻量图

如果你希望拿到最完整的 provider、依赖与动作信息,优先使用 Terraform JSON。

示例结果

1 个示例

审查一次新增 VPC 并更新策略的 apply

用 Terraform JSON plan 快速看出哪些资源是新增、替换或策略更新。

Terraform Plan Summary
查看输入参数
{ "planInput": "{\n \"format_version\": \"1.2\",\n \"resource_changes\": [\n {\n \"address\": \"aws_vpc.main\",\n \"mode\": \"managed\",\n \"type\": \"aws_vpc\",\n \"name\": \"main\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"create\"\n ]\n }\n },\n {\n \"address\": \"aws_subnet.app\",\n \"mode\": \"managed\",\n \"type\": \"aws_subnet\",\n \"name\": \"app\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"create\"\n ]\n }\n },\n {\n \"address\": \"aws_iam_policy.read\",\n \"mode\": \"managed\",\n \"type\": \"aws_iam_policy\",\n \"name\": \"read\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"update\"\n ]\n }\n },\n {\n \"address\": \"aws_security_group.web\",\n \"mode\": \"managed\",\n \"type\": \"aws_security_group\",\n \"name\": \"web\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"change\": {\n \"actions\": [\n \"delete\",\n \"create\"\n ]\n }\n }\n ],\n \"configuration\": {\n \"root_module\": {\n \"resources\": [\n {\n \"address\": \"aws_vpc.main\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": []\n },\n {\n \"address\": \"aws_subnet.app\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": [\n \"aws_vpc.main\"\n ]\n },\n {\n \"address\": \"aws_iam_policy.read\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": [\n \"aws_vpc.main\"\n ]\n },\n {\n \"address\": \"aws_security_group.web\",\n \"provider_name\": \"provider[\\\"registry.terraform.io/hashicorp/aws\\\"]\",\n \"depends_on\": [\n \"aws_vpc.main\",\n \"aws_subnet.app\"\n ]\n }\n ]\n }\n }\n}", "planFile": "", "inputFormat": "json", "showDependencyGraph": true }

Click to upload file or drag and drop file here

Maximum file size: 15MB Supported formats: application/json, text/plain, application/octet-stream, .json, .txt

关键信息

分类
开发与 Web
输入类型
textarea, file, select, checkbox
输出类型
html
样本覆盖
4
支持 API
Yes

概览

Terraform Plan 可视化器是一款专为 DevOps 和云基础设施工程师设计的实用工具。它能够解析通过 `terraform show -json` 导出的 JSON 文件或纯文本 Plan 输出,将资源变更自动分类为创建、更新、删除、替换等操作。在执行 `terraform apply` 之前,通过直观的摘要报告和轻量级依赖关系图,帮助团队快速审查基础设施变更,降低误操作风险。

适用场景

  • 在执行 `terraform apply` 前需要进行代码审查(Code Review),确保基础设施变更符合预期时。
  • 当 Terraform Plan 输出内容过长,难以通过终端纯文本快速识别关键资源(如数据库、VPC)的删除或替换操作时。
  • 需要向非技术团队或管理层展示基础设施变更摘要及资源依赖关系时。

工作原理

  • 将 Terraform Plan 的 JSON 数据或纯文本直接粘贴到输入框,或上传保存好的 `.json` / `.txt` 文件。
  • 工具会自动识别输入格式(也可手动指定),并解析其中的资源变更动作(Create、Update、Delete、Replace 等)。
  • 提取 Provider 信息和资源间的依赖关系,若勾选“显示依赖图”,则会为核心依赖边绘制轻量级网络图。
  • 最终生成一份结构化的 HTML 摘要报告,按操作类型和 Provider 清晰展示所有即将发生的基础设施变更。

使用场景

核心网络架构调整:在修改 VPC、子网或路由表时,通过依赖图确认安全组和网关的变更顺序。
敏感资源保护:在 CI/CD 流程中,通过可视化面板快速排查是否有意外的数据库实例或存储桶被标记为“Delete”或“Replace”。
多 Provider 部署审查:当一次部署涉及 AWS、Datadog 和 Kubernetes 多个 Provider 时,按 Provider 分类查看变更摘要。

用户案例

1. 审查新增 VPC 及安全组策略更新

DevOps 工程师
背景原因
团队正在为新项目搭建基础网络环境,涉及 VPC、子网、IAM 策略和安全组的创建与更新。
解决问题
终端输出的 Plan 文本太长,难以直观确认安全组是否正确依赖了新建的 VPC。
如何使用
将 `terraform show -json plan.out` 的结果粘贴到“Terraform Plan 输入”框,勾选“显示依赖图”。
示例配置
{"inputFormat": "json", "showDependencyGraph": true}
效果
成功生成 HTML 摘要,清晰显示 VPC 和子网为 create,IAM 策略为 update,并在依赖图中直观展示了安全组对 VPC 的依赖关系。

2. 排查意外的资源替换(Replace)

SRE 工程师
背景原因
在更新 RDS 数据库实例的某个参数时,不确定该修改是否会触发实例重建。
解决问题
需要在 apply 前绝对确认数据库不会被销毁重建。
如何使用
上传生成的 `plan.txt` 文件,选择输入格式为“Text”,快速查看变更分类。
示例配置
{"inputFormat": "text", "showDependencyGraph": false}
效果
摘要报告中明确列出了所有资源的变更类型,工程师在 Replace 分类下未发现 RDS 实例,确认可以安全执行 apply。

用 Samples 测试

json, text, file

相关专题

常见问题

为什么推荐使用 JSON 格式而不是纯文本?

JSON 格式(通过 `terraform show -json` 生成)包含了更完整的资源元数据、明确的依赖关系边以及更规范的动作标签,解析结果比纯文本更准确丰富。

这个工具会保存我的 Terraform Plan 数据吗?

不会。所有解析和可视化处理均在浏览器本地或单次请求中完成,不会持久化存储您的基础设施敏感数据。

支持哪些 Terraform 版本?

支持解析标准 Terraform 生成的 Plan 输出,特别是包含 `resource_changes` 结构的 JSON 格式(如 format_version 1.1/1.2)。

依赖图能展示所有资源吗?

为了保证渲染性能和图表的可读性,依赖图主要为前几组核心依赖边绘制轻量级网络,适合快速查看主干架构关系。

纯文本解析支持哪些动作识别?

纯文本解析支持识别标准的符号标识,如 `+` (create)、`-` (delete)、`~` (update)、`-/+` (replace) 以及 `<=` (read)。

API 文档

请求端点

POST /zh/api/tools/terraform-plan-visualizer

请求参数

参数名 类型 必填 描述
planInput textarea -
planFile file (需要先上传) -
inputFormat select -
showDependencyGraph checkbox -

文件类型参数需要先通过 POST /upload/terraform-plan-visualizer 上传获取 filePath,然后将 filePath 传递给对应的文件字段。

响应格式

{
  "result": "
Processed HTML content
", "error": "Error message (optional)", "message": "Notification message (optional)", "metadata": { "key": "value" } }
HTML: HTML

AI MCP 文档

将此工具添加到您的 MCP 服务器配置中:

{
  "mcpServers": {
    "elysiatools-terraform-plan-visualizer": {
      "name": "terraform-plan-visualizer",
      "description": "解析 Terraform plan 的 JSON 或文本输出,对资源变化分类,并在 apply 前展示依赖导向的摘要报告",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=terraform-plan-visualizer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

你可以串联多个工具,比如:`https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`,最多20个。

支持 URL 文件链接或 Base64 编码作为文件参数。

如果遇见问题,请联系我们:[email protected]