測試 Terraform 程式代碼

Terraform 可啟用雲端基礎結構的定義、預覽和部署。 使用 Terraform,您可以使用 HCL 語法建立組態檔。 HCL 語法可讓您指定雲端提供者,例如 Azure,以及構成雲端基礎結構的專案。 建立組態檔之後,您會建立一個 執行計劃 ,讓您在部署基礎結構變更之前先預覽這些變更。 驗證變更之後,您會套用執行計劃來部署基礎結構。

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

實作整合測試

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

  • 靜態程式碼分析工具,例如 lint 和格式化工具。
  • 執行 terraform validate 來驗證組態檔的語法。
  • 執行 terraform 計畫 以確保設定符合預期。

實作單元測試

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

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

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

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

實作合規性測試

使用合規測試確保設定符合您為專案定義的政策。 例如,您可以定義 Azure 資源的地緣政治命名慣例。 或者,您可能想要從定義的映像檔子集中建立虛擬機。 利用合規測試來執行這些規則。

通常,將合規測試定義為持續整合流程的一部分。

實施端對端(E2E)測試

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

E2E 測試通常是一個三步驟的流程。 首先,將設定套用到測試環境中。 接著執行程式碼驗證結果。 最後,重新初始化或關閉測試環境(例如解除虛擬機配置)。