跳轉到

Terraform 狀態管理與 Megaport 資源

本主題說明 Terraform 狀態檔,以及使用它將組態檔對應到您網路上已部署的 Megaport 服務的建議作法。

什麼是 Terraform 狀態?

Terraform 會將您建立的資源資訊儲存在名為 terraform.tfstate 的狀態檔中。

此檔案會在執行 terraform apply 指令後自動建立。它提供由 Terraform 管理之基礎架構在特定時間點的快照。它會建立在部署 Terraform 的同一個目錄中。我們建議定期監控 terraform.tfstate

Terraform 狀態檔的主要目的包括:

  • 對應真實世界資源 – 狀態檔會追蹤 Terraform 已建立並正在管理的真實世界基礎架構資源。它會記錄其組態、ID 與相依性的相關資訊。

  • 單一真相來源 – 狀態檔是關於您目前基礎架構的單一真相來源。當您執行 terraform apply 指令時,它會將您的組態檔與狀態檔進行比對,以判斷需要進行哪些變更。

  • 追蹤中繼資料 – 狀態檔會儲存 Terraform 內部使用的中繼資料,例如用來建立該狀態的 Terraform 版本與資源相依性。

如需有關 Terraform 狀態檔的更多資訊,請參閱 狀態檔(HashiCorp)

認識 Megaport 資源的 Terraform 狀態

Terraform 狀態是將您的組態檔對應到部署於您網路上的 Megaport 資源之關鍵元件。當您執行 terraform apply 指令時,Terraform 會建立名為 terraform.tfstate 的狀態檔,用來追蹤其所管理的所有資源、這些資源的組態與彼此間的相依關係。

Megaport Terraform Provider 狀態檔包含哪些內容?

對於 Megaport 資源,狀態檔會追蹤下列資訊:

  • 資源 ID 與 UID
  • Port 組態
  • VXC 設定
  • MCR 路由器組態
  • 合作夥伴連線
  • 位置資訊

狀態管理重點概念

  • 匯入既有資源 – 如果您已透過 Portal 設定了 Megaport 服務,請使用 terraform import 指令將它們納入 Terraform 管理:

    範例 1:匯入既有的 Port

    terraform import megaport_port.my_port "example-uid-41d4-a716-446655440000"
    

    範例 2:匯入既有的 VXC

    terraform import megaport_vxc.my_vxc "example-uid-426f-9247-bb680e5fe0c8"
    

    如需更多資訊,請參閱 匯入既有的生產環境服務

  • 防止意外刪除 – 為了保護關鍵基礎架構,請使用 Terraform 的 prevent_destroy 生命週期功能。此選項可在套用組態更新時防止不小心刪除既有資源。 如需更多資訊(包含一些範例),請參閱 Megaport Terraform Provider GitHub repository, Lifecycle Prevent Destroy Example

  • 團隊環境的狀態檔儲存 – 預設情況下,Terraform 會在本機儲存狀態資訊。

    對於團隊環境中的 Terraform 狀態檔儲存,建議使用遠端儲存空間,以利協作、版本控制與安全性。

    • 使用遠端狀態儲存(Terraform Cloud、S3 等)。
    • 啟用狀態鎖定以防止同時修改。
    • 考慮加密狀態檔,因為其中包含敏感資訊。
  • 狀態檔維護 – 有時您可能需要使用某些指令,例如:

    • 使用 terraform state list 檢視所有受管資源。
    • 使用 terraform state show 檢視特定資源。
    • 使用 terraform state rm 從狀態中移除資源而不銷毀它。
  • 處理狀態漂移 – Terraform 的狀態檔會追蹤其所管理的所有基礎架構。若在 Terraform 之外手動變更這些資源,可能會導致狀態檔變得不正確,此情況稱為 drift

    如果 Terraform 記錄的基礎架構與實際情況不一致,它會嘗試修正差異,可能導致您的資源被非預期地刪除或重新建立。 如需更多資訊,請參閱 Manage resource drift (HashiCorp)

    如果在 Terraform 之外對 Megaport 資源進行了變更:

    • 使用 terraform refresh 指令,以目前的資源組態更新狀態。
    • 考慮定期執行 terraform plan 指令,以偵測未經授權的變更。

建議作法

為獲得最佳效果,我們建議您遵循以下與 Terraform 相關的作法:

  • 定期備份您的狀態檔 – 一旦遺失便無法復原。
  • 將組態檔納入版本控制 – 不過,切勿將包含認證等敏感資料的狀態檔存入版本控制。欲了解更多資訊,請參閱 Sensitive Data in State (HashiCorp)
  • 模組化複雜的組態 – 這種作法可促進更有組織且可重複使用的結構,以改善資源管理。
  • 在 Portal 中鎖定 Megaport 服務 – Terraform 狀態是資源管理的單一真相來源。為防止在 Portal 與 Terraform 中對生產服務產生互相衝突的變更,建議鎖定生產服務。 如需更多資訊,請參閱 鎖定 Megaport 服務

如需更多資訊,請參閱 瞭解 Terraform 推薦實務(HashiCorp)

實用參考