由於基礎架構是程式碼(IaC),企業組織可以進行擴展,並持續自動化與管理其 IT 基礎架構。由於大型科技公司和雲端供應商提供不同的 IaC 工具,HashiCorp 的 Terraform 以其配置和管理雲端資源的明確方法而脫穎而出。Terraform 命令套件中的一項有趣功能是更新 Terraform,這在確保基礎架構的狀態與配置檔案一致方面扮演關鍵角色。
本文深入探討了更新更新模式、基礎架構管理的重要性,以及如何有效運用。
了解 Terraform Refresh
Terraform 更新功能可將您的 Terraform 狀態檔案與 Terraform 所管理的基礎架構的目前狀態同步。想像一下,您的 Terraform 狀態檔案是概述基礎架構所需配置的藍圖。然而,隨著時間的推移,Terraform 無法控制的基礎架構可能會直接進行手動變更。Terraform 更新更新透過更新狀態檔案來反映這些真實世界的修改,從而彌補了這一差距。
terraform refresh 的主要目的是偵測資源的實際狀態與所需狀態之間的任何漂移,如組態檔中所定義。由於對 Terraform 外部的基礎設施進行手動變更,或基礎設施環境本身發生變更,可能會發生這種漂移。
如何使用 Terraform Refresh
使用 terraform refresh 非常簡單。指令語法如下:
$ terraform refresh
此命令會指示 Terraform 重新整理目前在 Terraform 設定中管理的所有資源的狀態檔案。值得注意的是,terraform refresh 只會更新狀態檔案,不會修改您實際的基礎架構。
假設您有一個 Terraform 配置,其中配置了 AWS S3 貯體實例。以下是範例組態檔案(main.tf):
provider "aws" {
region = "us-west-2"
}
resource "aws_s3_bucket" "example" {
bucket = "my-unique-bucket-name"
acl = "private"
}
若要套用此設定並建立 S3 儲存區,請執行以下操作:
$ terraform init
$ terraform apply
如果直接透過 AWS 控制台或 API 對 S3 儲存區進行任何變更,執行 terraform 更新將更新狀態檔案,以反映這些變更:
$ terraform refresh
其他選項和旗標
- 輸入:如果設定為假,當 Terraform 需要使用者輸入時,停用互動輸入
- 狀態:指定用於作業的自訂狀態檔案
以下是他們的使用範例:
$ terraform refresh -input=false -state="custom_state.tfstate"
Terraform Refresh 的優勢
在基礎架構管理工作流程中整合terraform refresh有幾個優點,其中一些有:
- 提高計劃準確度:透過更新狀態檔案,terraform 更新可確保您的 terraform 計畫輸出準確反映所需的變更,讓您的基礎架構與 Terraform 配置保持一致。這樣可以消除根據過時的州資訊提出不必要的修改的風險。
- 強化基礎架構能見度:Terraform 更新可讓您清楚了解基礎架構的目前狀態。這種透明度可讓您識別程式碼與實際基礎架構之間的任何差異,並在必要時採取糾正措施。
- 簡化基礎架構管理:Terraform 更新功能可讓您的 Terraform 狀態檔案維持在最新狀態,進而簡化基礎架構管理。您可以自信地套用設定變更,因為狀態檔案能準確反映基礎基礎架構。
使用 Terraform Refresh 的最佳做法
使用更新表格時,請牢記以下最佳做法:
- 在 Terraform v0.15.4 之前:在舊版中,terraform 更新會直接更新您的狀態檔案。然而,由於潛在的安全顧慮,這種行為現在被視為過時。建議採用 terraform-僅更新。此方法的優點是在完成更新之前提示您進行確認,讓您可以在變更套用到狀態檔案之前先檢閱變更。
- -自動核准:雖然有些文件可能參考 -自動核准的旗標與更新錯誤,但此旗標也已過時,應避免使用。它繞過確認,並可能導致意外後果。
- 預定使用量:通常建議策略性地使用 terraform 更新,特別是在執行 terraform 計畫或 terraform 套用命令之前。如此可確保您的計劃能反映最新的基礎架構狀態。
- 版本控制整合:考慮將您的 Terraform 配置與 Git 等版本控制系統整合。這可讓您追蹤 Terraform 程式碼的變更,並在必要時還原為舊版。如果出現異常的更新,這就變得特別重要。
- 有限範圍更新:如果您只想重新整理 Terraform 配置中的特定資源或模組,您可以利用目標 - 標記進行 terraform 重新整理。這種針對性的方法有助於管理大型和複雜的基礎架構部署。
- 了解潛在影響:雖然 terraform refresh 會更新狀態檔案,但不會修改您的基礎架構。然而,更新狀態可能會顯示所需狀態(定義於 Terraform 組態中)與基礎架構實際狀態的差異。準備好解決更新狀態檔案後出現的任何差異。
結論
Terraform 更新在保持 Terraform 配置與實際基礎架構之間的一致性上扮演了關鍵角色。透過保持狀態檔案同步,您可以確保計畫準確無誤,並簡化基礎架構管理。
對於 Terraform 管理基礎架構的進階儲存解決方案,請考慮使用 Pure Storage 產品,如 Kubernetes 的 Portworx® 和各種容器工作負載的 Pure Cloud Block Store。這些解決方案提供強大的資料管理功能,可進一步提升雲端基礎架構的可靠性和效率。