Terraform 作業的最佳做法

本文件提供 Terraform 作業的規範和建議。

本指南並非 Terraform 的介紹。如要瞭解如何搭配使用 Terraform 和 Google Cloud,請參閱「開始使用 Terraform」。

一律先規劃

請務必先為 Terraform 執行作業產生計畫。將企劃書儲存至輸出檔案。基礎架構擁有者核准後,請執行這項計畫。即使開發人員在本機中製作變更原型,也應在套用計畫前產生計畫,並查看要新增、修改和刪除的資源。

實作自動化管道

為確保執行作業一致,請透過自動化工具執行 Terraform。如果您已使用並廣泛採用某個建構系統 (例如 Jenkins),請使用該系統自動執行 terraform planterraform apply 指令。如果沒有現有系統可用,請採用 Cloud BuildTerraform Cloud

使用服務帳戶憑證進行持續整合

當 Terraform 從 CI/CD 管道中的機器執行時,應從執行管道的服務繼承服務帳戶憑證。盡可能在 Google Cloud 上執行持續整合管道,因為 Cloud Build、Google Kubernetes Engine 或 Compute Engine 會在未下載服務帳戶金鑰的情況下,插入憑證。

如果管道是在 Google Cloud外執行,建議使用工作負載身分聯盟,這樣就不必下載服務帳戶金鑰即可取得憑證。

避免匯入現有資源

盡可能避免匯入現有資源 (使用 terraform import),因為這樣做可能會讓您難以完全瞭解手動建立資源的來源和設定。請改為透過 Terraform 建立新資源,然後刪除舊資源。

如果刪除舊資源會造成大量工作,請使用 terraform import 指令並取得明確核准。將資源匯入 Terraform 後,請專門使用 Terraform 管理該資源。

Google 提供的工具可用來將Google Cloud 資源匯入 Terraform 狀態。詳情請參閱「將 Google Cloud 資源匯入 Terraform 狀態」。

請勿手動修改 Terraform 狀態

Terraform 狀態檔案對於維護 Terraform 設定和 Google Cloud 資源之間的對應關係至關重要。資料毀損可能會導致重大基礎架構問題。如需修改 Terraform 狀態,請使用 terraform state 指令。

定期查看版本固定點

固定版本可確保穩定性,但會防止錯誤修正和其他改善項目納入設定。因此,請定期檢查 Terraform、Terraform 供應器和模組的版本固定值。

如要自動執行這項程序,請使用 Dependabot 等工具。

在本機執行時使用應用程式預設憑證

當開發人員在本機重複執行 Terraform 設定時,應透過執行 gcloud auth application-default login 產生應用程式預設憑證。請勿下載服務帳戶金鑰,因為下載的金鑰較難管理及保護。

將別名設為 Terraform

如要簡化本機開發作業,您可以為指令列 Shell 設定檔新增別名:

  • alias tf="terraform"
  • alias terrafrom="terraform"

後續步驟