将 Terraform 用作 Azure 开发人员 CLI 的代码工具作为基础结构
Azure 开发人员 CLI (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 使用持久 化状态 数据来跟踪其管理的资源。
启用远程状态的方案:
- 允许共享对状态数据的访问权限,并允许多人协作处理该基础结构资源的集合
- 避免公开状态文件中包含的敏感信息
- 由于在本地存储状态而减少意外删除的可能性
启用远程状态
请确保 配置远程状态存储帐户。
添加文件夹中
infra
调用provider.conf.json
的新文件。{ "storage_account_name": "${RS_STORAGE_ACCOUNT}", "container_name": "${RS_CONTAINER_NAME}", "key": "azd/azdremotetest.tfstate", "resource_group_name": "${RS_RESOURCE_GROUP}" }
在
infra
文件夹中找到的更新provider.tf
,将后端设置为远程# 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 状态。
- 模板: 在 Azure 上使用 Node.js API 和 MongoDB(Terraform)的 React Web 应用
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈