Terraform 使用
在了解了 Terraform 的基本概念和工作流之后,您該如何使用 Terraform 來創建、更新或銷毀基礎設施資源呢?
Terraform 使用步驟
Terraform 的使用流程分為四個步驟:
編寫基礎設施模板文件
首先,您必須在模板文件中定義并以代碼的形式編寫您的基礎設施。模板文件向 Terraform 描述了您想要配置的資源。
生成執行計劃
運行 Terraform Plan 命令生成您期望的狀態的執行計劃。
運行執行計劃
運行 Terraform Apply 執行該計劃來構建模板中所描述的基礎設施。
變更配置,繼續增量執行
隨著模板內容的變化,Terraform 可以確定哪些變化了,并且創建可以運行的增量執行計劃。
Terraform 安裝
Terraform 已經預先安裝在阿里云 Cloud Shell 上了,您也可以通過二進制包安裝的方式或者使用不同操作系統的包管理器將其安裝在本地機器上。
例如,您想要在 Windows 機器上手動安裝 Terraform:首先,通過 Terraform 下載地址下載與您的系統要求相符的軟件包,解壓軟件包。Terraform 包中包括一個叫做 terraform 的單獨二進制文件。編輯PATH變量,將 Terraform 包含進去,然后在新終端輸入terraform -help
來驗證安裝。
更多安裝方式,詳見Terraform 安裝。
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 后,將在阿里云上創建一個名為 mian-vpc 的 VPC 網絡。