Terraform 由 HashiCorp 開發,是一種廣泛使用的基礎架構即程式碼(IaC)工具,能讓使用者使用高階配置語言來定義和配置軟體基礎架構。隨著企業組織逐漸採用雲端基礎架構,Terraform 已成為管理及自動化基礎架構資源部署的必要條件。Terraform 的核心命令之一是 terraform 計畫,這是部署流程中的關鍵步驟,可確保基礎架構的變更安全、可預測且高效。
在這篇文章中,我們將深入探討此指令、它的功能,以及如何解讀 Terraform 配置的輸出。
Terraform 計劃命令是 Terraform 工作流程中的重要部分,它可作為 Terraform 對您的基礎架構所做的更改的乾式運行或預覽。它將基礎架構的目前狀態與 Terraform 配置檔案中定義的所需狀態進行比較,並顯示 Terraform 將採取的特定行動來彌補差距。這包括資源的新增、刪除和修改,例如建立新的虛擬機器、擴充現有資料庫,或移除未使用的儲存磁碟區。
能夠預覽您的配置代碼將對您的基礎架構造成什麼改變,在許多方面是有利的,包括:
若要執行 terraform 計劃,請先確定您的本機已安裝 Terraform。您可以從 HashiCorp 官方網站下載並安裝適當的版本。
在執行計劃指令之前,您需要在工作目錄中建立一個名為 main.tf 的基本 Terraform 組態檔案。以下是在雲端供應商中建立虛擬機器資源的簡易配置範例:
# Configure the cloud provider (replace with your provider details)
provider "aws" {
region = "us-east-1"
}
# Define a virtual machine resource
resource "aws_instance" "my_vm" {
ami = "ami-0f78f7e824d9499e0" # Replace with the desired AMI ID
instance_type = "t2.micro"
}
1. 初始化 Terraform 目錄
導覽至包含 main.tf 檔案的工作目錄,並在您的人機介面中執行以下指令:
$ terraform init
此指令會初始化 Terraform 目錄,下載任何設定中提到的必要外掛程式或模組,並準備使用 Terraform 的環境。
2. 執行 Terraform 計畫
初始化完成後,請執行以下命令以產生執行計畫:
$ terraform plan
此指令會分析您的 Terraform 配置,並將其與基礎架構的目前狀態(若有)進行比較。接著會顯示詳細的計畫,概述 Terraform 為達到設定中定義的所需狀態所採取的行動。計畫通常會顯示建立、修改或刪除的資源
3. 儲存計畫輸出
如果您想儲存計劃以供未來參考,或與團隊成員分享,您可以選擇使用計劃指令的 -out 標誌。例如,以下命令會將計畫儲存至名為 plan.tfplan 的檔案:
$ terraform plan -out=plan.tfplan
terraform plan 命令僅預覽變更。它不會對您的基礎架構進行任何修改。在審查並核准計劃後,您可以使用 $ terraform apply 指令來執行計劃變更。
Terraform 計畫輸出通常分為幾個部分,每個部分都提供對規劃行動的寶貴見解:
本節列出 Terraform 打算針對您的基礎架構資源執行的具體行動。這些行動分為三種主要類型:
本節提供各項資源的深度資訊,這些資源將受計劃影響。以下是您通常可以找到的詳細資訊:
本節詳細說明將套用至資源的特定變更。對於正在建立的資源(以 + 表示),它將列出將定義的屬性及其對應值。對於要修改的資源,將顯示對現有屬性的變更。
計畫輸出通常會以摘要部分作結,提供計畫行動的高層級概述。本摘要一般會將資源總數細分為以下類別:
要新增:將要建立的新資源數量
要變更 :要修改的現有資源數量
銷毀:將刪除的現有資源數量
當您使用我們之前建立的樣品配置運行 terraform 計劃時,您將獲得類似於以下的結果:
# $ terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_instance.my_vm will be created
resource "aws_instance" "my_vm" {
+ ami = "ami-0f78f7e824d9499e0"
+ instance_type = "t2.micro"
+ tags = {
+ Name = "sample-tag"
}
}
1. 資源行動:第一行表示 Terraform 將在此計劃期間執行建立行動 (+)。
2. 資源詳細資料:後續章節將深入探討單一資源 aws_instance.my_vm 的細節。這表示 Terraform 會在您的 AWS 環境中建立一個名為 my_vm 的新 AWS EC2 執行個體。 AWS 詳細資料進一步指定了 AMI ID(ami-0f78f7e824d9499e0)、執行個體類型 (t2.micro ),以及 Terraform 將套用至新執行個體的標籤(名稱 = "樣本標籤 ")。
3. 摘要(隱含):雖然此範例並未明確顯示摘要,但摘要可能會顯示在更複雜的計畫輸出結束時,表示要建立的資源總數。
套用基礎架構變更前,terraform 計畫指令就是您的安全網。以下是最大化效益的一些基本做法:
仔細檢查資源變更:
發現潛在問題:
利用輸出:
Terraform 計畫是 Terraform 工作流程中強大的工具。它提供了一種安全、透明的方法,在應用前預覽和驗證基礎架構變更。透過了解並有效使用 Terraform 計畫,您可以確保部署的效率、可預測性,並且沒有意外的後果。
Pure Storage 為您的 Terraform 部署提供了最佳的持久區塊式資料儲存解決方案。Portworx® 為您的所有容器和 Kubernetes Terraform 工作負載提供全面的資料平台。有了 Pure Cloud Block Store 的幫助,您可以在雲端運行任何資料庫或容器工作負載,就像地端基礎架構一樣。