Terraform Explorer 介绍

更新时间:

概览

Terraform Explorer 是阿里云基于 Terraform 开源版提供的一款在线调试 Terraform 配置文件的工具,旨在简化开发者编写 Terraform 配置文件和操作 Terraform 的流程,帮助开发者降低使用 Terraform 的门槛。借助 Terraform Explorer 开发者可以以表单填写的方式实现 Terraform 配置文件的自动生成和转换,并通过简单的按钮操作来实现 Terraform 的在线运行。

功能特性

Terraform 配置文件

Terraform 配置文件用于以代码化的方式定义基础设施资源。编写 Terraform 配置文件是IaC 工作流程的第一步,在配置文件定义所需的阿里云资源(例如:ECS实例、RDS数据库实例)、资源间的依赖关系等之后,Terraform 将自动根据文件内容完成所定义资源的创建和配置,实现自动化部署及运维。Terraform Explorer 即支持配置文件的自动生成,也支持开发者在线编辑配置文件模板。

功能集

功能点

功能描述

编写配置文件

自动生成配置文件

开发者选择云产品以及相关的资源类型后,点击“发起调试”按钮,Terraform Explorer 将会自动生成一个所选资源类型的配置文件,此时您可以通过左侧的表单填写部分或者全部参数来不断完善配置文件。

在线编辑配置文件

Terraform Explorer 为每个资源类型增加了一个或者多个示例模板,如果您不想填写太多的参数或者想要创建多个资源时,可以在选择资源类型之后,选择具体某个示例模板,点击“发起调试”按钮,即可看到模板详情并发起调试。

如果示例模板的内容无法满足您的需求,可以点击打开模板右上角的“编辑模式”,在现有的模板中在线增加或者修改内容,保存后继续发起调试。

Terraform 在线执行

初始化、预览和执行是配置文件编写完成后 Terraform 的工作流节点,Terraform Explorer 以调试任务为载体,通过对任务的执行来实现 Terraform 工作流节点。每一次调试任务的执行都会依次完成初始化、预览和执行三个动作。

功能集

功能点

功能描述

执行配置文件

在线初始化

初始化动作是预览和执行的第一步,因此在 Terraform Explorer 中作为预览和执行的一部分进行运行。

在线预览

点击“预览”按钮,Terraform Explorer 将创建一个新的调试任务或者在已有的调试任务中依次执行terraform initterraform plan命令,执行完毕后将生成一个 Terraform 执行计划,并将执行计划详情展示在页面中。您可预览执行计划并选择继续执行或者放弃执行。

在线执行

当执行计划符合您的预期后,您可以点击“执行”按钮来运行执行计划。Terraform Explorer 将根据您的选择执行 terraform apply命令,进而完成执行计划中所含资源的创建和变更操作。

当点击“预览并执行”按钮时,意味着生成执行计划后将跳过人工确认而自动执行,即 Terraform Explorer 将依次执行terraform initterraform planterraform apply命令。

资源销毁

当您调试完成想要销毁资源时,点击“销毁资源”按钮,Terraform Explorer 将通过terraform plan生成一个销毁资源的执行计划,在您确认要销毁后,Terraform Explorer 将通过terraform apply完成这个销毁执行计划的运行,进而释放任务中所包含的全部资源。

产品优势

Terraform Explorer 支持对 Terraform 开源版的主要功能的在线管理,具备环境免安装、代码免编写、状态免管理等优势。

环境免安装

Terraform Explorer 支持了对 Terraform 客户端的在线托管,并且在执行 Terraform 命令时支持对阿里云 Provider 的加速下载,您无需再关心 Terraform 的安装、配置以及 Provider 下载慢等环境问题

代码免编写

Terraform Explorer 针对单资源提供了通过表单自动生成模板配置文件的能力,您无需再担心 Terraform 代码不会写、编写麻烦等问题;同时,为每个资源类型配备了相关的示例模板,可以通过选择模板来实现一键运行。

除此之外,Terraform Explorer 默认会帮您保存每一次的 Terraform 的执行使用到的模板和参数,当您发起新的调试任务时,可以选择从历史模板和参数中加载内容。

状态免管理

状态管理是 Terraform 重要组成部分,分为本地状态(local)和远端状态(remote)两种。Terraform Explorer 同样支持对这两种状态的管理,默认采用本地状态管理,但是会帮您托管每一次 Terraform 的运行状态,以确保同一份配置文件的反复多次运行,在保证状态安全的前提下,保留了 Terraform 原生的状态管理机制。

基本概念

概念

说明

版本

阿里云 Terraform Provider 的版本,目前支持的最低版本是 1.202.0

产品

每个 Provider 版本所支持的云产品列表,支持按关键字模糊搜索

资源类型

每个 Provider 版本中选定的云产品所支持的资源类型,支持按关键字模糊搜素

模板

Terraform 配置文件,是一个 HCL 格式的文本文件,使用UTF-8编码。您可以通过填写表单参数自动生成或者引用某个资源类型下的示例模板。

模板版本

每次调试任务执行的时候,都会将使用到的模板保存在一个模板版本,您可以查看不同的模板版本详情。

任务

每当通过“发起调试”按钮发起一次新的调试动作时,Terraform Explorer 将会创建一个新的调试任务。每个任务对应唯一的一个状态文件,因此同一时间只能执行一次预览或者执行操作。

调试记录

每个任务每次的运行(预览或者预览并执行)都会生成一次调试记录,新的调试记录都是在上一次调试记录的基础上生成执行计划并执行。

调试历史

每个资源类型的所有调试任务都会被记录在调试历史中,您可以选择历史任务并在最新的调试记录的基础上继续调试。

访问控制

在访问 Terraform Explorer 时,部分功能需要先完成授权,比如创建调试任务、预览、预览并执行、销毁资源、查看调试历史、查看资源详情等。Terraform Explorer 所使用到的需要鉴权的 API 和功能如下表所示:

API 名称

API 描述

涉及功能点(按钮)

CreateExplorerModule

保存模板内容

预览,预览并执行

GetExplorerModule

获取模板内容详情

查看模板

CreateExplorerModuleVersion

每次继续调试模板内容都将被保存为一个新的版本

预览,预览并执行,继续调试

CreateExplorerTask

创建调试任务

预览,预览并执行

GetExplorerTask

获取调试任务详情

调试结果

UpdateExplorerTaskAttribute

更新调试任务

销毁资源

CreateJob

创建作业,运行调试任务

预览,预览并执行,销毁资源

GetJob

获取调试任务运行详情

调试结果

OperateJob

操作作业,预览完成后执行调试任务

预览并执行,执行,销毁资源

ListJobs

获取作业列表,即调试任务的执行记录

调试记录

CreateExplorerHistory

记录每一次的调试任务

调试历史

ListExplorerHistory

获取调试历史详情和历史参数

调试历史,使用历史参数

ListResources

获取创建成功的资源列表和详情

资源详情

在使用 Terraform Explorer 前,您可以通过如上的 API 实现精细化权限控制,也可以通过如下的权限策略完成快速授权:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iacservice:CreateExplorerModuleVersion",
        "iacservice:GetExplorerModule",
        "iacservice:CreateExplorerModule"
      ],
      "Resource": "acs:iacservice:*:*:explorermodule/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iacservice:CreateExplorerTask",
        "iacservice:UpdateExplorerTaskAttribute",
        "iacservice:GetExplorerTask"
      ],
      "Resource": "acs:iacservice:*:*:explorertask/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iacservice:CreateJob",
        "iacservice:GetJob",
        "iacservice:listJobs",
        "iacservice:OperateJob"
      ],
      "Resource": "acs:iacservice:*:*:task/*/job/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iacservice:ListResources",
        "iacservice:ListExplorerHistories",
        "iacservice:CreateExplorerHistory"
      ],
      "Resource": "*"
    }
  ]
}