Skip to Content

什麼是 Terraform 計劃?

Terraform 由 HashiCorp 開發,是一種廣泛使用的基礎架構即程式碼(IaC)工具,能讓使用者使用高階配置語言來定義和配置軟體基礎架構。隨著企業組織逐漸採用雲端基礎架構,Terraform 已成為管理及自動化基礎架構資源部署的必要條件。Terraform 的核心命令之一是 terraform 計畫,這是部署流程中的關鍵步驟,可確保基礎架構的變更安全、可預測且高效。

在這篇文章中,我們將深入探討此指令、它的功能,以及如何解讀 Terraform 配置的輸出。

什麼是 Terraform 計劃?

Terraform 計劃命令是 Terraform 工作流程中的重要部分,它可作為 Terraform 對您的基礎架構所做的更改的乾式運行或預覽。它將基礎架構的目前狀態與 Terraform 配置檔案中定義的所需狀態進行比較,並顯示 Terraform 將採取的特定行動來彌補差距。這包括資源的新增、刪除和修改,例如建立新的虛擬機器、擴充現有資料庫,或移除未使用的儲存磁碟區。

Terraform 計劃的優勢

能夠預覽您的配置代碼將對您的基礎架構造成什麼改變,在許多方面是有利的,包括:

  • 透明度:Terraform 計畫提供近期變更的詳細總覽,清楚說明您的基礎架構中將建立、修改或刪除的內容。這種透明度有助於將錯誤降至最低,並確保參與部署流程的每個人都在同一頁上。
  • 風險降低:透過事先預覽變更,使用者可以在潛在問題中斷服務之前先找出並加以解決。Terraform 計畫可以幫助發現資源衝突(例如建立名稱重複的 VM)、缺少相依性(例如,需要未設定的特定安全群組的資料庫),或因配置檔案中的錯別字而進行意外修改。
  • 協作:Terraform 計畫與 Git 等版本控制系統無縫整合,促進團隊合作。與團隊成員分享計畫成果,即可在規範承諾的脈絡下審查變更,並在變更實施前提高透明度和責任感。
  • 效率: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 將根據您的配置建立新的資源。
  • 閱讀(~):此符號表示 Terraform 將讀取現有資源的狀態,以確定是否需要進行任何變更。此符號在計劃輸出中較不頻繁,因為 Terraform 通常會在計劃階段決定所需的行動。
  • 刪除(-):此符號表示 Terraform 將刪除您配置中不再定義的現有資源。

資源詳情

本節提供各項資源的深度資訊,這些資源將受計劃影響。以下是您通常可以找到的詳細資訊:

  • 資源類型:這指明了 Terraform 管理的基礎架構資源類型(例如 aws_instance、azurerm_resource_group)。
  • 資源名稱:這會識別在您的 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 計畫指令就是您的安全網。以下是最大化效益的一些基本做法:

仔細檢查資源變更

  • 專注於標示為建立(+)或刪除(-)的資源。
  • 驗證新資源的屬性值是否與您的意圖一致(例如 AMI ID、儲存大小)。
  • 再次檢查對現有資源的修改是否正確。

發現潛在問題

  • 尋找資源衝突(例如重複的名稱、缺少相依性)。
  • 確保所有必要的相依性(如安全組)都已定義。
  • 小心刪除可能中斷服務的意外資源。

利用輸出:

  • 驗證規劃的變更是否符合您的基礎架構目標。
  • 考慮與資源修改相關的潛在成本影響。您也可以分享計劃輸出,以供團隊審查和溝通。

結論

Terraform 計畫是 Terraform 工作流程中強大的工具。它提供了一種安全、透明的方法,在應用前預覽和驗證基礎架構變更。透過了解並有效使用 Terraform 計畫,您可以確保部署的效率、可預測性,並且沒有意外的後果。

Pure Storage 為您的 Terraform 部署提供了最佳的持久區塊式資料儲存解決方案。Portworx® 為您的所有容器和 Kubernetes Terraform 工作負載提供全面的資料平台。有了 Pure Cloud Block Store 的幫助,您可以在雲端運行任何資料庫或容器工作負載,就像地端基礎架構一樣。

03/2025
Rancher Kubernetes Engine 2 on VMware with Portworx
Gain consistent experience across public cloud, on- premises, hybrid cloud, or edge architecture with Rancher Kubernetes Engine (RKE2) on VMware with Portworx.
參考架構
33 頁
聯繫我們
聯絡Pure訊息 標誌
聊天標誌
問題或建議

如對Pure的產品或認證,有任何的疑問或建議,歡迎與我們聯繫!

關鍵標誌
預約試用

預約現場示範,親眼看看 Pure 如何幫助您將資料轉化為強大的成果。 

聯絡我們:886-2-3725-7989

媒體:pr@purestorage.com

 

Pure Storage總部

34F, Taipei Nanshan Plaza,

No. 100, Songren Road,

Xinyi District,

Taipei City 110016

Taiwan (R.O.C.)

800-379-7873 (一般資訊)

info@purestorage.com

關閉
關閉關閉 X 標誌
您的瀏覽器已不受支援!

較舊版的瀏覽器通常存在安全風險。為讓您使用我們網站時得到最佳體驗,請更新為這些最新瀏覽器其中一個。