Azure 開發者命令列工具(azd)支援多個基礎設施即代碼(IaC)提供者,包括:
根據預設, azd 假設 Bicep 為 IaC 提供者。 請參閱比較 Terraform 和 Bicep 一文,以幫助您決定哪一個 IaC 提供者最適合您的項目。
注意
Terraform 仍在 Beta 中。 在功能版本控制與發行策略頁面上深入瞭解 Alpha 和 Beta 功能支援
必要條件
- 安裝及設定 Terraform
- 安裝並登入 Azure CLI(v 2.38.0+)
- 檢閱您將在 Node.js 或 Python Terraform 範本中部署的架構圖表和 Azure 資源。
注意
雖然 azd 不依賴 Azure CLI 登入,但 Terraform 需要 Azure CLI。 請從 Terraform 的官方檔深入瞭解這項需求。
將 Terraform 設定為 IaC 提供者
azure.yaml開啟專案根目錄中找到的檔案,並確定您有下列幾行可覆寫預設值,也就是 Bicep:infra: provider: terraform.tf將所有檔案放入infra專案根目錄。執行
azd up。
注意
請參閱這兩個以 Terraform 作為 IaC 提供者的 azd 範本:Node.js 和 Terraform 和 Python 和 Terraform。
azd pipeline config for Terraform
Terraform 會儲存受控基礎結構和設定的相關狀態。 由於此狀態檔案,您必須在執行 之前azd pipeline config,才能在 GitHub 中設定部署管線。
根據預設, azd 假設使用本機狀態檔案。 如果您在啟用遠端狀態之前執行 azd up ,則必須執行 azd down 並切換至遠端狀態檔案。
本機與遠端狀態
Terraform 會使用保存 的狀態 數據來追蹤其管理的資源。
開啟遠端狀態的案例:
- 允許共享狀態數據的存取權,並允許多人在該基礎結構資源集合上共同作業
- 避免公開狀態檔案中包含的敏感性資訊
- 為了減少因本地儲存狀態而導致意外刪除的可能性
啟用遠端狀態
請務必 設定遠端狀態記憶體帳戶。
在資料夾中新增名為
provider.conf.jsoninfra的新檔案。{ "storage_account_name": "${RS_STORAGE_ACCOUNT}", "container_name": "${RS_CONTAINER_NAME}", "key": "azd/azdremotetest.tfstate", "resource_group_name": "${RS_RESOURCE_GROUP}" }更新位於
provider.tf資料夾中的infra,將後端設為遠端。# Configure the Azure Provider terraform { required_version = ">= 1.1.7, < 2.0.0" backend "azurerm" { }執行
azd env set <key> <value>以在.env檔案中新增配置。 例如:azd env set RS_STORAGE_ACCOUNT your_storage_account_name azd env set RS_CONTAINER_NAME your_terraform_container_name azd env set RS_RESOURCE_GROUP your_storage_account_resource_group根據您的一般工作流程執行下一個
azd命令。 偵測到遠端狀態時,azd使用已設定的後端組態初始化 Terraform。若要與隊友共用環境,請確定他們執行
azd env refresh -e <environmentName>以重新整理本機系統中的環境設定,然後執行步驟 4 以在.env檔案中新增設定。
另請參閱
- 深入瞭解 Terraform 對 Azure CLI 的相依性。
- 如需遠端狀態的詳細資訊,請參閱將 Terraform 狀態儲存在 Azure 儲存體。
- 範本: 在 Azure 上使用 Node.js API 和 MongoDB 的 React Web 應用程式