本文為您介紹在Windows中,如何快速使用Terraform建立阿里雲資源。
使用Terraform進行基礎設施即代碼(IaC)管理,包含以下幾個主要步驟。
安裝Terraform:確保您的系統能夠識別並執行Terraform命令。
編寫Terraform設定檔:設定檔是Terraform的核心,用於描述資源的建立、配置和依賴關係,如建立VPC、ECS、OSS等。
初始化與建立資源:將基礎設施設計變為現實的關鍵步驟。
查看和管理資源:在部署後,可以便捷地查看和管理基礎設施環境,確保其符合最新的需求和設計。
銷毀資源:當不再需要所建立的資源時,可以銷毀相應目錄下已建立資源。
1. 安裝Terraform
訪問Terraform官網,下載適合您的Windows作業系統版本的Terraform二進位檔案並解壓。

配置環境變數,將Terraform的安裝路徑添加到系統內容變數Path中。
在案頭按右鍵此電腦,選擇屬性 -> 進階系統設定 -> 環境變數 -> 系統變數/使用者變數。
在系統變數/使用者變數中單擊Path,選擇編輯 -> 建立,輸入檔案所在目錄的路徑,單擊確定完成配置。
驗證安裝成功,同步選取Win+R鍵,輸入
cmd單擊確定,開啟命令提示字元。執行terraform --version,如果出現以下資訊則表示安裝成功。Terraform v1.9.3 on windows_amd64
2. 編寫Terraform設定檔
設定檔是Terraform的核心,用於定義在雲端或本地部署的基礎設施資源,如VPC、ECS、OSS等。
建立一個新的檔案夾,例如命名為ecs,並在該檔案夾下建立一個Terraform設定檔,例如設定檔名稱為main.tf。
為每個Terraform專案建立獨立執行目錄可以確保資源群組織清晰,避免狀態檔案混淆,便於版本控制和團隊協作,同時有利於實現環境隔離和模組化管理,提高組態管理的可維護性和安全性。
編寫Terraform設定檔,以建立ECS為例。將 ECS 執行個體及其依賴的資源(VPC,安全性群組等)以代碼化的方式定義到設定檔中。為了方便起見,您可以將以下代碼複製到main.tf中。
重要樣本中建立的ECS為隨用隨付,資源建立後將會產生相關費用。
樣本中使用了環境變數作為Terraform認證方式,更多資訊,請參見Terraform身份認證。
建立ECS所需要的資源如下:
Resource
說明
建立VPC執行個體
建立vSwitch執行個體
建立安全性群組執行個體
建立安全性群組的出入訪問規則
建立ECS執行個體
variable "name" { type = string default = "tf-test" } # 設定地區 variable "region" { type = string default = "cn-beijing" } # 公網頻寬,當大於0的時候,將為執行個體分配一個公網。 variable "internet_max_bandwidth_out" { type = number default = 10 } # 設定ECS執行個體規格 variable "instance_type" { type = string default = "ecs.e-c1m1.large" } # 設定鏡像ID variable "image_id" { default = "ubuntu_18_04_64_20G_alibase_20190624.vhd" } # 設定標籤 variable "tags" { type = map(string) default = { From = "Terraform" Usage = "demo" } } provider "alicloud" { region = var.region } # 擷取zone_id data "alicloud_zones" "default" { available_instance_type = var.instance_type available_resource_creation = "VSwitch" available_disk_category = "cloud_ssd" } # 建立VPC resource "alicloud_vpc" "vpc" { vpc_name = var.name cidr_block = "172.16.0.0/12" } # 建立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" { name = var.name vpc_id = alicloud_vpc.vpc.id } # 向安全性群組添加入方向允許存取規則 resource "alicloud_security_group_rule" "allow_tcp_22" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "22/22" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" } # 建立ECS resource "alicloud_instance" "instance" { availability_zone = data.alicloud_zones.default.zones.0.id security_groups = alicloud_security_group.default.*.id instance_type = var.instance_type system_disk_category = "cloud_essd_entry" image_id = var.image_id instance_name = var.name vswitch_id = alicloud_vswitch.vsw.id internet_max_bandwidth_out = var.internet_max_bandwidth_out tags = var.tags } output "ecs_id" { value = alicloud_instance.instance.id } output "ecs_ip" { value = alicloud_instance.instance.public_ip }
3. 初始化與建立資源
Terraform設定檔編寫完成後,需要先初始化工作目錄,然後再建立資源。
3.1 Terraform初始化
在cmd中切換到步驟2所建立的檔案夾,然後執行terraform init命令進行初始化。terraform init命令是使用任何Terraform設定檔之前必須執行的第一個命令,主要目的是初始化一個Terraform工作目錄,包括下載必要的阿里雲供應商外掛程式以及各種其他記錄檔案。
# 切換到D盤
d:
# 切換到步驟2中的檔案夾路徑的命令,tool/terraform/projects/ecs是步驟2建立的檔案夾路徑,您可根據實際路徑替換。
cd tool/terraform/projects/ecs
# 執行初始化命令
terraform init
3.2 建立資源
執行
terraform plan建立一個執行計畫,並詳細展示了在執行 terraform apply 時將建立、修改或銷毀的所有資源資訊。
執行
terraform apply時,將根據terraform plan產生的執行計畫來建立資源。在建立過程中,需要按照提示輸入yes,以繼續建立資源。關於變數如何傳值,請參見Variable中的變數設定方式。
4. 查看和管理資源
在部署後,您也能輕鬆地管理和維護您的基礎設施環境,確保其符合最新的需求和設計。
4.1 查看資源
通過
terraform show命令查看資源的詳細資料。
通過
terraform state list命令列出所有已建立的資源。
通過
terraform state show <資源類型>.<資源名稱>查看某個資源的詳細資料。
通過阿里雲控制台查看已建立資源資訊。
4.2 管理資源
Terraform在完成資源的建立和修改後,會將資源的狀態和屬性資訊儲存在terraform.tfstate檔案中。我們可以使用terraform state相關命令對state進行管理。更多資訊,請參見狀態原理介紹。
4.3 資源變更
修改設定檔(如main.tf或者其他.tf檔案)中需要變更的資源定義,例如您想添加新的安全性群組入方向允許存取規則。
resource "alicloud_security_group_rule" "allow_tcp_443" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = "443/443" priority = 1 security_group_id = alicloud_security_group.default.id cidr_ip = "0.0.0.0/0" }執行
terraform plan命令預覽所做的變更。
如果變更符合預期,執行
terraform apply命令,來應用這些變更到您的基礎設施。執行此命令時,Terraform會要求您確認是否確實要進行這些變更。輸入yes並斷行符號後,變更會被應用。
5. 資源銷毀
當不再需要所建立的資源時,可以通過terraform destroy命令銷毀所有已建立的資源。
