全部產品
Search
文件中心

Terraform:Cloud Shell

更新時間:Jul 25, 2025

阿里雲Cloud Shell是一款協助您營運的免費產品,預裝了Terraform的組件,並配置好身份憑證(credentials)。因此您可直接在Cloud Shell中運行Terraform的命令。

登入Cloud Shell

開啟瀏覽器,訪問Cloud Shell的地址https://shell.alibabacloud.com/。 更多Cloud Shell入口及使用請參見使用雲命令列

說明

建議您使用RAM使用者登入,為確保您的阿里雲帳號的安全,如非必要,避免使用阿里雲帳號訪問雲資源。

切換Terraform版本

Cloud Shell中預設的Terraform版本可能較低,會導致部分功能無法正常使用,建議將其切換至更高版本。

  1. 查看當前Terrafrom版本,若版本低於1.2,建議切換到更高版本。

    terraform version

    image

  2. 查看Cloud Shell中內建的Terraform版本:

    tfenv list

    image

  3. 切換至指定Terrafrom版本:

    tfenv use <terraform_version>

    例如切換至1.9.5版本:

    image

編寫Terraform模板

本文以使用Terraform建立ECS為例,協助您理解Terraform是如何編排資源,以及如何使用Terraform命令進行資源的建立與銷毀。

  1. 建立Terraform模板檔案,命名為main.tf,並使用vim命令進行直接編輯。

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

    複製以下Terraform範例程式碼到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
    }
  2. 執行terraform init命令初始化配置。

  3. 執行terraform plan命令預覽配置。image

  4. 執行terraform apply建立ECS執行個體,如果執行結果返回Apply complete! ,則證明資源建立成功。image.png

  5. 若不再需要這台執行個體,可執行terraform destroy對建立過的資源進行釋放。