全部產品
Search
文件中心

Terraform:在Windows中使用Terraform

更新時間:Aug 06, 2025

本文為您介紹在Windows中,如何快速使用Terraform建立阿里雲資源。

使用Terraform進行基礎設施即代碼(IaC)管理,包含以下幾個主要步驟。

  1. 安裝Terraform:確保您的系統能夠識別並執行Terraform命令。

  2. 編寫Terraform設定檔:設定檔是Terraform的核心,用於描述資源的建立、配置和依賴關係,如建立VPC、ECS、OSS等。

  3. 初始化與建立資源:將基礎設施設計變為現實的關鍵步驟。

  4. 查看和管理資源:在部署後,可以便捷地查看和管理基礎設施環境,確保其符合最新的需求和設計。

  5. 銷毀資源:當不再需要所建立的資源時,可以銷毀相應目錄下已建立資源。

1. 安裝Terraform

  1. 訪問Terraform官網,下載適合您的Windows作業系統版本的Terraform二進位檔案並解壓。

    image

  2. 配置環境變數,將Terraform的安裝路徑添加到系統內容變數Path中。

    1. 在案頭按右鍵此電腦,選擇屬性 -> 進階系統設定 -> 環境變數 -> 系統變數/使用者變數。

    2. 在系統變數/使用者變數中單擊Path,選擇編輯 -> 建立,輸入檔案所在目錄的路徑,單擊確定完成配置。

  3. 驗證安裝成功,同步選取Win+R鍵,輸入cmd單擊確定,開啟命令提示字元。執行terraform --version,如果出現以下資訊則表示安裝成功。

    Terraform v1.9.3
    on windows_amd64
    

2. 編寫Terraform設定檔

設定檔是Terraform的核心,用於定義在雲端或本地部署的基礎設施資源,如VPC、ECS、OSS等。

  1. 建立一個新的檔案夾,例如命名為ecs,並在該檔案夾下建立一個Terraform設定檔,例如設定檔名稱為main.tf

    為每個Terraform專案建立獨立執行目錄可以確保資源群組織清晰,避免狀態檔案混淆,便於版本控制和團隊協作,同時有利於實現環境隔離和模組化管理,提高組態管理的可維護性和安全性。

  2. 編寫Terraform設定檔,以建立ECS為例。將 ECS 執行個體及其依賴的資源(VPC,安全性群組等)以代碼化的方式定義到設定檔中。為了方便起見,您可以將以下代碼複製到main.tf中。

    重要
    • 樣本中建立的ECS為隨用隨付,資源建立後將會產生相關費用。

    • 樣本中使用了環境變數作為Terraform認證方式,更多資訊,請參見Terraform身份認證

    建立ECS所需要的資源如下:

    Resource

    說明

    alicloud_vpc

    建立VPC執行個體

    alicloud_vswitch

    建立vSwitch執行個體

    alicloud_security_group

    建立安全性群組執行個體

    alicloud_security_group_rule

    建立安全性群組的出入訪問規則

    alicloud_instance

    建立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 建立資源

  1. 執行terraform plan建立一個執行計畫,並詳細展示了在執行 terraform apply 時將建立、修改或銷毀的所有資源資訊。

    image

  2. 執行terraform apply時,將根據terraform plan產生的執行計畫來建立資源。在建立過程中,需要按照提示輸入yes,以繼續建立資源。關於變數如何傳值,請參見Variable中的變數設定方式。

    image

4. 查看和管理資源

在部署後,您也能輕鬆地管理和維護您的基礎設施環境,確保其符合最新的需求和設計。

4.1 查看資源

  • 通過terraform show命令查看資源的詳細資料。

    image

  • 通過terraform state list命令列出所有已建立的資源。

    image

  • 通過terraform state show <資源類型>.<資源名稱>查看某個資源的詳細資料。

    image

  • 通過阿里雲控制台查看已建立資源資訊。

4.2 管理資源

Terraform在完成資源的建立和修改後,會將資源的狀態和屬性資訊儲存在terraform.tfstate檔案中。我們可以使用terraform state相關命令對state進行管理。更多資訊,請參見狀態原理介紹

4.3 資源變更

  1. 修改設定檔(如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"
    }
  2. 執行terraform plan命令預覽所做的變更。

    image

  3. 如果變更符合預期,執行terraform apply命令,來應用這些變更到您的基礎設施。執行此命令時,Terraform會要求您確認是否確實要進行這些變更。輸入 yes 並斷行符號後,變更會被應用。

    image

5. 資源銷毀

當不再需要所建立的資源時,可以通過terraform destroy命令銷毀所有已建立的資源。

image

相關文檔