阿里雲Cloud Shell是一款協助您營運的免費產品,預裝了Terraform的組件,並配置好身份憑證(credentials)。因此您可直接在Cloud Shell中運行Terraform的命令。
登入Cloud Shell
開啟瀏覽器,訪問Cloud Shell的地址https://shell.alibabacloud.com/。 更多Cloud Shell入口及使用請參見使用雲命令列。
說明
建議您使用RAM使用者登入,為確保您的阿里雲帳號的安全,如非必要,避免使用阿里雲帳號訪問雲資源。
切換Terraform版本
Cloud Shell中預設的Terraform版本可能較低,會導致部分功能無法正常使用,建議將其切換至更高版本。
查看當前Terrafrom版本,若版本低於1.2,建議切換到更高版本。
terraform version
查看Cloud Shell中內建的Terraform版本:
tfenv list
切換至指定Terrafrom版本:
tfenv use <terraform_version>例如切換至1.9.5版本:

編寫Terraform模板
本文以使用Terraform建立ECS為例,協助您理解Terraform是如何編排資源,以及如何使用Terraform命令進行資源的建立與銷毀。
建立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 }執行
terraform init命令初始化配置。執行
terraform plan命令預覽配置。
執行
terraform apply建立ECS執行個體,如果執行結果返回Apply complete! ,則證明資源建立成功。
若不再需要這台執行個體,可執行
terraform destroy對建立過的資源進行釋放。