将 Terraform 用作 Azure 开发人员 CLI 的代码工具作为基础结构

Azure 开发人员 CLI (azd) 支持多个基础结构作为代码(IaC)提供程序,包括:

默认情况下, azd 假定 Bicep 为 IaC 提供程序。 请参阅 比较 Terraform 和 Bicep 文章,了解如何确定哪个 IaC 提供程序最适合你的项目。

注意

Terraform 仍处于 beta 阶段。 在功能版本控制与发布策略页上阅读有关 alpha 和 beta 功能支持的详细信息

先决条件

注意

虽然 azd 不依赖于 Azure CLI 登录名,但 Terraform 需要 Azure CLI。 从 Terraform 的官方文档中详细了解此要求

将 Terraform 配置为 IaC 提供程序

  1. azure.yaml打开在项目的根目录中找到的文件,并确保具有以下行来替代默认值,即 Bicep:

    infra:
      provider: terraform
    
  2. 将所有 .tf 文件添加到 infra 项目根目录中找到的目录。

  3. 运行 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 使用持久 化状态 数据来跟踪其管理的资源。

启用远程状态的方案:

  • 允许共享对状态数据的访问权限,并允许多人协作处理该基础结构资源的集合
  • 避免公开状态文件中包含的敏感信息
  • 由于在本地存储状态而减少意外删除的可能性

启用远程状态

  1. 请确保 配置远程状态存储帐户

  2. 添加文件夹中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}"
    }
    
  3. infra文件夹中找到的更新provider.tf,将后端设置为远程

    # Configure the Azure Provider
    terraform {
      required_version = ">= 1.1.7, < 2.0.0"
      backend "azurerm" {
      }
    
  4. 运行 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
    
  5. 按照常规工作流运行下一 azd 个命令。 检测到远程状态后, azd 使用配置的后端配置初始化 Terraform。

  6. 若要与团队成员共享环境,请确保他们运行 azd env refresh -e <environmentName> 以刷新本地系统中的环境设置,并执行步骤 4 以在 .env 文件中添加配置。

另请参阅

后续步骤