在瞭解了 Terraform 的基本概念和工作流程之後,您該如何使用 Terraform 來建立、更新或銷毀基礎設施資源呢?
Terraform 使用步驟
Terraform 的使用流程分為四個步驟:
編寫基礎設施模板檔案
首先,您必須在模板檔案中定義並以代碼的形式編寫您的基礎設施。模板檔案向 Terraform 描述了您想要配置的資源。
產生執行計畫
運行 Terraform Plan 命令產生您期望的狀態的執行計畫。
運行執行計畫
運行 Terraform Apply 執行該計劃來構建模板中所描述的基礎設施。
變更配置,繼續增量執行
隨著模板內容的變化,Terraform 可以確定哪些變化了,並且建立可以啟動並執行增量執行計畫。
Terraform 安裝
Terraform 已經預先安裝在阿里雲 Cloud Shell 上了,您也可以通過二進位包安裝的方式或者使用不同作業系統的包管理器將其安裝在本地機器上。
例如,您想要在 Windows 機器上手動安裝 Terraform:首先,通過 Terraform 下載地址下載與您的系統要求相符的軟體包,解壓軟體包。Terraform 包中包括一個叫做 terraform 的單獨二進位檔案。編輯PATH變數,將 Terraform 包含進去,然後在新終端輸入terraform -help來驗證安裝。
更多安裝方式,詳見Provider 安裝。
Terraform 身份認證
對 Terraform 的身份認證指的是在通過 Terraform 操作阿里雲基礎設施前對阿里雲 Terraform Provider 的身份認證,只有認證通過後才能與阿里雲 API 進行通訊並建立和管理阿里雲的基礎設施資源。
阿里雲 Terraform Provider 的身份認證方式有很多種,選擇不同的認證方式一方面依賴於 Terraform 安裝和運行所在的環境,另一方面取決於您的使用情境。此處主要介紹通過環境變數設定身份認證的方式,更多認證方式,詳見Terraform 身份認證。
如果您在本機上運行 Terraform您首先得需要一個阿里雲 RAM 使用者,並為該使用者建立身份認證資訊 AccessKey ID和AccessKey Secret。登入阿里雲 RAM 控制台的使用者頁面,選擇一個現有使用者或建立一個新使用者,並為其建立AccessKey。然後通過使用環境變數 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY 進行身份設定,設定成功後,Terraform 將使用這個密鑰進行認證。
export ALICLOUD_ACCESS_KEY="<AccessKey ID>"
export ALICLOUD_SECRET_KEY="<AccessKey Secret>"如果您在 Cloud Shell 上運行 Terraform
阿里雲的 Cloud Shell 對 Terraform 是預認證過的。Cloud Shell 是一個計算引擎虛擬機器,身份憑證是自動的,即當您登入 Cloud Shell 後,將以您的登入身份自動化佈建環境變數 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY,您無需再單獨設定。
如果您在阿里雲 ECS 執行個體上運行 Terraform
在阿里雲 ECS 執行個體上手動設定環境變數 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY 後,Terraform 即可使用這個密鑰進行認證。但是從安全性考慮,在阿里雲 ECS 上運行 Terraform 時,推薦使用ECS 服務角色認證方式。
如果您在阿里雲 ACK 容器中運行 Terraform
在 Dockerfile 中預設定環境變數 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY,每當新容器建立後,Terraform 即可使用這個密鑰進行認證。但是從安全性考慮,在阿里雲 ACK 容器中運行 Terraform 時,推薦使用OIDC 角色扮演(AssumeRoleWithOIDC)認證方式。
如果您在阿里雲外的機器上運行 Terraform
在阿里雲外的機器上手動設定環境變數 ALICLOUD_ACCESS_KEY 和 ALICLOUD_SECRET_KEY 後,Terraform 即可使用這個密鑰進行認證。
使用案例
讓我們通過建立一個簡單的 VPC 網路來進一步加深對 Terraform 工作流程的理解。
首先,建立一個帶有 .tf 副檔名的設定檔,然後在檔案中定義阿里雲作為供應商,添加 HCL 代碼以建立一個阿里雲 VPC 網路執行個體。儲存代碼後,切換到儲存檔案的目錄,運行 terraform init 初始化阿里雲供應商,運行 terraform plan 和 terraform apply 命令依次產生執行計畫並應用。運行完 terraform apply 後,將在阿里雲上建立一個名為 main-vpc 的 VPC 網路。