Azure 開發者 CLI(azd)支援多個基礎設施作為程式碼(IaC)提供者,包括:
預設情況下,azd 假設 Bicep 是 IaC 提供者。 參考《 比較 Terraform 與 Bicep 》文章,有助於判斷哪家 IaC 供應商最適合你的專案。
注意
Terraform 仍在 Beta 中。 想了解更多關於 alpha 和 beta 功能支援,請參考 功能版本與發佈策略 頁面
必要條件
- 安裝並設定 Terraform。
- Install Azure CLI (v 2.38.0+).
- 檢視架構圖,以及您在 Node.js 或 Python Terraform 範本中部署的 Azure 資源。
Important
即使您使用 azd,Terraform 部署仍需要登入 Azure CLI。 Terraform azurerm 提供者預設透過 Azure CLI 進行認證,並不會從憑證快取讀取憑證。azd 如果你只執行 azd auth login,azd up 會在佈建步驟因 ERROR: Please run 'az login' to setup account 而失敗。 請參閱 Authenticate to Azure 以了解推薦的登入流程。
向 Azure 驗證
因為 Terraform 使用 Azure CLI 進行驗證,所以在執行 azd up 之前,您必須先登入 azd 和 az。 你可以用兩種方式來做這件事。
選項 1:使用 Azure CLI 登入一次(建議)
設定 azd 將驗證委派給 Azure CLI。 這個設定讓你只用 az login 一次登入,並且用相同的憑證來使用兩個工具。
azd config set auth.useAzCliAuth true
az login
如果你使用多個租戶,請加入 --tenant 參數:
az login --tenant <tenant-id>
選項二:分別登入每個工具
如果您偏好讓 azd 與 Azure CLI 的驗證彼此獨立,請使用各自的命令登入每個工具:
azd auth login
az login
當任一權杖到期時,你需要更新兩個工作階段。
將 Terraform 設定為 IaC 提供者
打開位於專案根目錄中的
azure.yaml檔案,並確保你有以下幾行代碼,以覆寫預設為 Bicep 的設定:infra: provider: terraform請將所有
.tf檔案加入專案根目錄中的infra目錄。執行
azd up。
注意
看看這兩個以 Terraform 為 IaC 提供者的 azd 範本:
azd pipeline config 用於 Terraform
Terraform 會儲存受控基礎結構和設定的相關狀態。 因為這個狀態檔案,你需要在 GitHub 中設定部署管線之前,啟用遠端狀態 然後執行azd pipeline config。
預設情況下, azd 假設使用本地狀態檔案。 如果你在啟用遠端狀態前已經執行 azd up 過,現在需要執行 azd down 並切換到遠端狀態檔案。
本機與遠端狀態
Terraform 使用 持久狀態資料 來追蹤它管理的資源。
開啟遠端狀態的案例:
- 允許共享狀態數據的存取權,並允許多人在該基礎結構資源集合上共同作業
- 避免公開狀態檔案中包含的敏感性資訊
- 為了減少因本地儲存狀態而導致意外刪除的可能性
啟用遠端狀態
務必 設定遠端狀態儲存帳號。
在資料夾
provider.conf.json中新增一個名為infra的檔案。{ "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 的依賴。
- 關於遠端狀態的更多資訊,請參見在 Azure 儲存體中儲存 Terraform 狀態。
- 模板:使用 Node.js API 和 MongoDB(Terraform)的 React 網頁應用程式在 Azure 上