測試 Terraform 程式代碼

Terraform 可讓您定義、預覽和部署雲端基礎結構。 使用 Terraform 時,您可以使用 HCL 語法來建立設定檔。 HCL 語法可讓您指定雲端提供者 (例如 Azure) 和構成雲端基礎結構的元素。 建立設定檔之後,您可以建立執行計畫,讓您先預覽基礎結構變更,之後再部署。 驗證變更之後,您可以套用執行計畫來部署基礎結構。

Terraform 是基礎結構即程式代碼 (IaC) 工具。 此工具類別是指您將 Terraform 檔案視為專案的原始程式碼。 該程式的一部分包含版本控制和原始程式碼控制。 此外,測試也應該是您程式的一部分。 本文概述可以針對 Terraform 專案執行的不同類型的測試。

實作整合測試

整合測試會驗證新引進的程式代碼變更不會中斷現有的程序代碼。 在 DevOps 中,持續整合 (CI) 是指每當程式代碼基底變更時建置整個系統的程式,例如想要將 PR 合併到 Git 存放庫的人。 下列清單包含整合測試的常見範例:

  • 靜態程式代碼分析工具,例如lint和 format。
  • 執行 terraform validate 來驗證組態檔的語法。
  • 執行 terraform 計劃 ,以確保組態如預期般運作。

實作單元測試

單元測試可確保程式的特定部分或函式運作正常。 單元測試是由功能的開發人員所撰寫。 有時稱為「測試驅動開發」或 TDD,這種測試牽涉到持續短的開發週期。 在 Terraform 項目的內容中,單元測試可以採用 使用 terraform plan 的形式,以確保產生的計劃中可用的實際值等於預期的值。

當您的 Terraform 模組開始變得更複雜時,單元測試特別有用:

  • 產生動態區塊
  • 使用迴圈
  • 計算局部變數

如同整合測試,持續整合程式中會包含許多次單元測試。

實作合規性測試

合規性測試是用來確保設定遵循您為專案定義的原則。 例如,您可以定義 Azure 資源的地緣政治命名慣例。 或者,您可能想要從定義的映射子集建立虛擬機。 合規性測試將用來強制執行這些規則。

合規性測試通常也會定義為持續整合程式的一部分。

實作端對端測試 (E2E) 測試

E2E 測試會先驗證程式,再部署到生產環境。 範例案例可能是將兩部虛擬機部署到虛擬網路的 Terraform 模組。 您可能想要防止這兩部計算機互相 Ping。 在此範例中,您可以定義測試,以在部署之前驗證預期的結果。

E2E 測試通常是三個步驟的程式。 首先,組態會套用至測試環境。 然後會執行程式代碼來驗證結果。 最後,測試環境會重新初始化或關閉(例如解除分配虛擬機)。