Terraform 是一款開源的基礎設施即代碼(IaC)工具,支援通過聲明式設定檔管理阿里雲資源的完整生命週期。本文介紹如何通過可視化介面或命令列兩種方式快速上手 Terraform,完成第一個阿里雲資源的建立。
選擇使用方式
Terraform 提供可視化和命令列兩種使用方式,根據實際需求選擇:
方式 | 適用情境 | 優勢 | 限制 |
不熟悉參數、首次使用、快速調試 | 圖形化表單配置,無需編寫代碼 | 僅支援單資源操作 | |
快速體驗、生產環境、複雜編排 | 支援多Resource Orchestration Service和狀態管理 | 依賴 CLI 環境 |
選擇 CLI 方式時,可通過Cloud Shell或本地安裝準備環境。
使用Terraform Explorer
Terraform Explorer 是阿里雲基於 Terraform 提供的線上調試工具,支援通過表單自動產生 Terraform 設定檔並線上執行。更多資訊,請參見 Explorer 介紹。
以下以建立一個Virtual Private Cloud 為例,介紹 Terraform Explorer 的兩種使用方式:自訂參數和樣本模板。
自訂參數建立資源
如需根據實際需求配置參數,按以下步驟操作:
登入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.

在模板詳情頁簽確認參數無誤後,單擊預覽查看執行計畫。

在預覽詳情頁簽確認待建立資源的資訊,單擊執行。

在執行詳情頁簽查看結果。執行成功會提示 "
Apply complete! Resources: 1 added, 0 changed, 0 destroyed."。執行失敗時,請根據提示修改參數後重新調試。
在資源詳情頁簽查看已建立的資源資訊。

(可選)修改資源:調整參數後單擊預覽並執行,重複步驟 2~4。更新成功會提示 "
Apply complete! Resources: 0 added, 1 changed, 0 destroyed."。
(可選)釋放資源:在執行詳情頁簽單擊銷毀資源,然後在預覽詳情頁簽單擊執行。

使用樣本模板建立資源
如果對資源參數不熟悉或僅希望快速體驗,可直接使用 Terraform Explorer 提供的樣本模板。
登入Terraform Explorer,選擇相應的產品、資源類型及樣本模板,單擊發起調試。在右側的樣本模板頁簽可查看模板詳情。

在模板詳情頁簽單擊預覽並執行。

在執行詳情頁簽,您可以查看執行結果。

(可選)若您希望釋放已建立的資源,在執行詳情頁簽單擊銷毀資源,然後在預覽詳情頁簽單擊執行。

也可以在調用歷史中進行繼續調試、銷毀資源等操作。
使用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 及以上版本以確保功能完整可用。
查看當前Terraform版本:
terraform version
查看 Cloud Shell 中內建的可用版本列表:
tfenv list
切換到指定版本(以 1.9.5 為例):
tfenv use 1.9.5
本地安裝
適用於生產環境和複雜編排情境,需要先安裝 Terraform 並配置身份憑證。
通過包管理器安裝(推薦)
macOS
使用Homebrew安裝:
#安裝HashiCorp的tap,用來定義包在homebrew的位置
brew tap hashicorp/tap
#執行安裝指令,安裝Terraform
brew install hashicorp/tap/terraform更新到最新版本:
#更新Homebrew
brew update
#更新terraform
brew upgrade hashicorp/tap/terraformWindows
使用Chocolatey安裝:
choco install terraformLinux
以 yum 包管理器為例:
yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform手動安裝
如果包管理器不可用,可選擇以下方式手動安裝。
使用先行編譯包
從 Terraform 官網下載對應作業系統的 zip 包並解壓。
將
terraform二進位檔案移動到系統PATH目錄中:macOS 或 Linux
mv ~/Downloads/terraform /usr/local/bin/Windows
進入控制台 > 系統 > 系統設定 > 環境變數。
在系統變數中找到 PATH,單擊編輯。
添加 Terraform 所在目錄路徑,確保與前一條目之間用分號分隔(如
c:\path;c:\path2)。啟動新的命令列視窗以使配置生效。
從源碼編譯
需要預先安裝 Go 語言環境。
複製 Terraform 源碼倉庫:
git clone https://github.com/hashicorp/terraform.git進入目錄並編譯安裝:
cd terraform go install編譯完成後,二進位檔案會放置在
$GOPATH/bin/目錄中。確保
$GOPATH/bin已添加到系統 PATH 中。配置方式與使用先行編譯包中的步驟 2 相同。
驗證安裝
運行以下命令確認 Terraform 已正確安裝:
terraform version命令成功執行並顯示版本號碼,表示安裝完成。
案例:建立 ECS 執行個體
以下以建立一台 ECS 執行個體為例,示範 Terraform Resource Orchestration Service的完整流程:建立 VPC → 建立交換器 → 建立安全性群組 → 建立 ECS 執行個體。
建立工作目錄並編寫 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。
初始化 Terraform 工作目錄:
terraform init預覽執行計畫,確認將要建立的資源:
terraform plan
建立資源。輸出
Apply complete!表示建立成功:terraform apply
不再需要這些資源時,執行以下命令釋放:
terraform destroy