Azure Developer CLI (azd) 支持多个基础结构即代码 (IaC) 提供程序,包括:
默认情况下,azd 默认使用 Bicep 作为 IaC 提供程序。 请参阅 Terraform 与 Bicep 对比一文,以帮助您决定哪种 IaC 提供商最适合您的项目。
注意事项
Terraform 仍处于 beta 阶段。 在 功能版本控制与发布策略 页上阅读有关 alpha 和 beta 功能支持的详细信息
先决条件
Important
即使使用azd,Terraform 部署也需要Azure CLI登录。 默认情况下,Terraform azurerm 提供程序通过Azure CLI进行身份验证,不会从azd凭据缓存读取令牌。 如果您仅运行 azd auth login,azd up 将在配置步骤中因 ERROR: Please run 'az login' to setup account 而失败。 有关建议的登录流程,请参阅向 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>
选项 2:分别登录到每个工具
如果想要保持azd和Azure CLI身份验证无关,请使用其自己的命令登录到每个工具:
azd auth login
az login
当任一令牌过期时,您需要刷新两个会话。
将 Terraform 配置为 IaC 提供程序
打开项目根目录中找到的
azure.yaml文件,并确保包含以下行来覆盖默认值,即 Bicep:infra: provider: terraform将所有
.tf文件添加到项目根目录下的infra目录。运行
azd up。
注意事项
查看将 Terraform 用作 IaC 提供程序的这两个 azd 模板:Node.js 和 Terraform 和 Python 和 Terraform。
azd pipeline config 适用于 Terraform
Terraform 存储托管基础结构和配置的状态。 由于此状态文件,需要在运行 azd pipeline config之前启用远程状态才能在 GitHub 中设置部署管道。
默认情况下, 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。
- 有关远程状态的详细信息,请参阅将 Terraform 状态存储在 Azure 存储。
- 模板:在 Azure 上将 React Web 应用与 Node.js API 和 MongoDB (Terraform) 配合使用