全部产品
Search
文档中心

Terraform:使用Terraform快速创建资源

更新时间:Feb 25, 2026

Terraform 是一款开源的基础设施即代码(IaC)工具,支持通过声明式配置文件管理阿里云资源的完整生命周期。本文介绍如何通过可视化界面或命令行两种方式快速上手 Terraform,完成第一个阿里云资源的创建。

选择使用方式

Terraform 提供可视化和命令行两种使用方式,根据实际需求选择:

方式

适用场景

优势

限制

Terraform Explorer

不熟悉参数、首次使用、快速调试

图形化表单配置,无需编写代码

仅支持单资源操作

Terraform CLI

快速体验、生产环境、复杂编排

支持多资源编排和状态管理

依赖 CLI 环境

选择 CLI 方式时,可通过Cloud Shell本地安装准备环境。

使用Terraform Explorer

Terraform Explorer 是阿里云基于 Terraform 提供的在线调试工具,支持通过表单自动生成 Terraform 配置文件并在线执行。更多信息,请参见 Terraform Explorer 介绍

以下以创建一个专有网络 VPC 为例,介绍 Terraform Explorer 的两种使用方式:自定义参数和示例模板。

自定义参数创建资源

如需根据实际需求配置参数,按以下步骤操作:

  1. 登录Terraform Explorer,选择产品资源类型,参照资源文档填写参数,单击发起调试

    创建 VPC 的主要参数如下。更多参数信息,请参见 alicloud_vpc

    参数名称

    参数描述

    示例值

    vpc_name

    VPC 名称

    tf-test-vpc

    cidr_block

    VPC 私网网段

    192.168.0.0/16

    description

    VPC 描述信息

    The VPC was created using Terraform.

    image

  2. 模板详情页签确认参数无误后,单击预览查看执行计划。

    image

  3. 预览详情页签确认待创建资源的信息,单击执行

    image

  4. 执行详情页签查看结果。执行成功会提示 "Apply complete! Resources: 1 added, 0 changed, 0 destroyed."。执行失败时,请根据提示修改参数后重新调试。

    image

  5. 资源详情页签查看已创建的资源信息。

    image

  6. (可选)修改资源:调整参数后单击预览并执行,重复步骤 2~4。更新成功会提示 "Apply complete! Resources: 0 added, 1 changed, 0 destroyed."。

    image

  7. (可选)释放资源:在执行详情页签单击销毁资源,然后在预览详情页签单击执行

    image

使用示例模板创建资源

如果对资源参数不熟悉或仅希望快速体验,可直接使用 Terraform Explorer 提供的示例模板。

  1. 登录Terraform Explorer,选择相应的产品资源类型示例模板,单击发起调试。在右侧的示例模板页签可查看模板详情。

    image

  2. 模板详情页签单击预览并执行

    image

  3. 执行详情页签,您可以查看执行结果。

    image

  4. (可选)若您希望释放已创建的资源,在执行详情页签单击销毁资源,然后在预览详情页签单击执行

    image

说明

也可以在调用历史中进行继续调试销毁资源等操作。

使用Terraform CLI

通过命令行使用 Terraform,需要先准备 CLI 环境,然后编写配置文件并执行命令创建资源。根据实际情况选择以下任一方式准备 Terraform CLI 环境:

  • Cloud Shell(推荐):免安装,适合快速体验和学习测试。

  • 本地安装:适合生产环境、持续集成和长期使用。

Cloud Shell

阿里云 Cloud Shell 是一款免费的运维工具,已预装 Terraform 并配置好身份凭证,可直接运行 Terraform 命令。

登录Cloud Shell

打开浏览器,访问 Cloud Shell。更多信息,请参见使用云命令行

说明

建议使用 RAM 用户登录。为确保阿里云账号安全,非必要时避免使用阿里云账号直接访问云资源。

切换 Terraform 版本

Cloud Shell 默认的 Terraform 版本可能较低,建议切换到 1.2 及以上版本以确保功能完整可用。

  1. 查看当前Terraform版本:

    terraform version

    image

  2. 查看 Cloud Shell 中内置的可用版本列表:

    tfenv list

    image

  3. 切换到指定版本(以 1.9.5 为例):

    tfenv use 1.9.5

    image

本地安装

适用于生产环境和复杂编排场景,需要先安装 Terraform 并配置身份凭证。

通过包管理器安装(推荐)

macOS

使用Homebrew安装:

#安装HashiCorp的tap,用来定义包在homebrew的位置
brew tap hashicorp/tap
#执行安装指令,安装Terraform
brew install hashicorp/tap/terraform

更新到最新版本:

#更新Homebrew
brew update
#更新terraform
brew upgrade hashicorp/tap/terraform

Windows

使用Chocolatey安装:

choco install terraform

Linux

yum 包管理器为例:

yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform

手动安装

如果包管理器不可用,可选择以下方式手动安装。

使用预编译包

  1. 从 Terraform 官网下载对应操作系统的 zip 包并解压。

  2. 将 terraform 二进制文件移动到系统 PATH 目录中:

    • macOS 或 Linux

      mv ~/Downloads/terraform /usr/local/bin/
    • Windows

      1. 进入控制面板 > 系统 > 系统设置 > 环境变量。

      2. 在系统变量中找到 PATH,单击编辑。

      3. 添加 Terraform 所在目录路径,确保与前一条目之间用分号分隔(如 c:\path;c:\path2)。

      4. 启动新的命令行窗口以使配置生效。

从源码编译

需要预先安装 Go 语言环境

  1. 克隆 Terraform 源码仓库:

    git clone https://github.com/hashicorp/terraform.git
  2. 进入目录并编译安装:

    cd terraform
    go install

    编译完成后,二进制文件会放置在 $GOPATH/bin/ 目录中。

  3. 确保 $GOPATH/bin 已添加到系统 PATH 中。配置方式与使用预编译包中的步骤 2 相同。

验证安装

运行以下命令确认 Terraform 已正确安装:

terraform version

命令成功执行并显示版本号,表示安装完成。

案例:创建 ECS 实例

以下以创建一台 ECS 实例为例,演示 Terraform 资源编排的完整流程:创建 VPC → 创建交换机 → 创建安全组 → 创建 ECS 实例。

  1. 创建工作目录并编写 Terraform 配置文件 main.tf

    mkdir tf-demo && cd tf-demo
    vim main.tf

    将以下代码复制到 main.tf

    provider "alicloud" {
      region = var.region
    }
    
    # 资源创建的地域
    variable "region" {
      default = "cn-beijing"
    }
    
    # ECS实例名称
    variable "instance_name" {
      default = "tf-cloudshell-test"
    }
    
    # ECS实例规格
    variable "instance_type" {
      default = "ecs.n2.small"
    }
    
    # 公网出带宽,值为0时,表示不开通公网
    variable "internet_bandwidth" {
      default = 10
    }
    
    # ECS系统镜像
    variable "image_id" {
      default = "ubuntu_18_04_64_20G_alibase_20190624.vhd"
    }
    
    # ECS系统盘类型
    variable "disk_category" {
      default = "cloud_efficiency"
    }
    # ECS实例登录密码
    variable "password" {
      default = "TF-test@1234"
    }
    
    # 创建VPC
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "tf_test_foo"
      cidr_block = "172.16.0.0/12"
    }
    
    # 根据实例规格和云盘类型查询存在资源的可用区
    data "alicloud_zones" "default" {
      available_disk_category     = var.disk_category
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    
    # 创建vSwitch
    resource "alicloud_vswitch" "vsw" {
      vpc_id     = alicloud_vpc.vpc.id
      cidr_block = "172.16.0.0/21"
      zone_id    = data.alicloud_zones.default.zones.0.id
    }
    
    # 创建安全组
    resource "alicloud_security_group" "default" {
      security_group_name   = "default"
      vpc_id = alicloud_vpc.vpc.id
    }
    
    # 创建安全组入方向规则
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "1/65535"
      priority          = 1
      security_group_id = alicloud_security_group.default.id
      cidr_ip           = "0.0.0.0/0"
    }
    
    resource "alicloud_instance" "instance" {
      # 绑定安全组
      security_groups = alicloud_security_group.default.*.id
      instance_type = var.instance_type
      system_disk_category = var.disk_category
      image_id = var.image_id
      instance_name = var.instance_name
      # 所在交换机
      vswitch_id = alicloud_vswitch.vsw.id
      internet_max_bandwidth_out = var.internet_bandwidth
      password  = var.password
    }
    重要

    示例中的安全组规则开放了所有 TCP 端口(1-65535)且来源 IP 为 0.0.0.0/0,仅适用于测试环境。生产环境请根据实际需求限制端口范围和来源 IP。

  2. 初始化 Terraform 工作目录:

    terraform init
  3. 预览执行计划,确认将要创建的资源:

    terraform plan

    image

  4. 创建资源。输出 Apply complete! 表示创建成功:

    terraform apply

    image.png

  5. 不再需要这些资源时,执行以下命令释放:

    terraform destroy

相关文档