Terraform AzAPI 提供程序概述
AzAPI 提供程序是 Azure ARM REST API 之上的精简层。 使用 AzAPI 提供程序,可以使用任何 API 版本管理任何 Azure 资源类型。 此提供程序通过启用新的 Azure 资源和属性(包括个人预览版)的管理来补充 AzureRM 提供程序。
资源
为了允许管理所有 Azure 资源和功能而无需更新,AzAPI 提供程序包含以下通用资源:
资源名称 | 说明 |
---|---|
azapi_resource | 用于使用完整 CRUD 完全管理任何 Azure(控制平面)资源(API)。 示例用例: 新的预览服务 添加到现有服务的新功能 当前未涵盖的现有功能/服务 |
azapi_update_resource | 用于管理没有完整 CRUD 的资源或部分资源 示例用例: 更新现有服务的新属性 更新预先创建的子资源 -例如 DNS SOA 记录。 |
资源配置示例
以下代码片段配置 AzureRM 提供程序中当前不存在的资源:
resource "azapi_resource" "publicip" {
type = "Microsoft.Network/Customipprefixes@2021-03-01"
name = "exfullrange"
parent_id = azurerm_resource_group.example.id
location = "westus2"
body = jsonencode({
properties = {
cidr = "10.0.0.0/24"
signedMessage = "Sample Message for WAN"
}
})
}
以下代码片段为 AzureRM 中的现有资源配置预览属性:
resource "azapi_update_resource" "test" {
type = "Microsoft.ContainerRegistry/registries@2020-11-01-preview"
resource_id = azurerm_container_registry.acr.id
body = jsonencode({
properties = {
anonymousPullEnabled = var.bool_anonymous_pull
}
})
}
使用 AzAPI 提供程序进行身份验证
AzAPI 提供程序启用与 AzureRM 提供程序相同的身份验证方法。 有关身份验证选项的详细信息,请参阅 向 Azure 验证 Terraform。
使用 AzAPI 提供程序的好处
AzAPI 提供程序具有以下优势:
- 支持所有 Azure 服务:
- 个人预览版服务和功能
- 公共预览版服务和功能
- 所有 API 版本
- 完整 Terraform 状态文件保真度
- 属性和值保存到状态
- 不依赖于 Swagger
- 常见且一致的 Azure 身份验证
AzAPI 提供程序的体验和生命周期
本部分介绍一些工具,可帮助你使用 AzAPI 提供程序。
VS Code 扩展和语言服务器
AzAPI VS Code 扩展提供丰富的创作体验,具有以下优势:
- Intellisense
- 代码自动完成
- 提示
- 语法验证
- 快速信息
AzAPI2AzureRM 迁移工具
AzureRM 提供程序提供用于管理 Azure 资源的最集成的 Terraform 体验。 因此,建议使用 AzAPI 和 AzureRM 提供程序,如下所示:
- 当服务或功能处于预览状态时,请使用 AzAPI 提供程序。
- 正式发布服务后,请使用 AzureRM 提供程序。
AzAPI2AzureRM 工具旨在帮助从 AzAPI 提供程序迁移到 AzureRM 提供程序。
AzAPI2AzureRM 是一种开源工具,可自动将 AzAPI 资源转换为 AzureRM 资源的过程。
AzAPI2AzureRM 有两种模式:规划和迁移:
- 计划显示可迁移的 AzAPI 资源。
- 将 AzAPI 资源迁移到 HCL 文件和状态中的 AzureRM 资源。
AzAPI2AzureRM 确保在迁移后,Terraform 配置和状态与实际状态保持一致。 可以通过完成迁移后运行 terraform plan
来验证状态是否已更新,以查看没有发生任何更改。
使用 AzAPI 提供程序
安装 VS Code 扩展
将 AzAPI 提供程序添加到 Terraform 配置。
terraform { required_providers { azapi = { source = "Azure/azapi" } } } provider "azapi" { # More information on the authentication methods supported by # the AzureRM Provider can be found here: # https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs # subscription_id = "..." # client_id = "..." # client_secret = "..." # tenant_id = "..." }
声明一个或多个 AzAPI 资源,如以下示例代码所示:
resource "azapi_resource" "example" { name = "example" parent_id = data.azurerm_machine_learning_workspace.existing.id type = "Microsoft.MachineLearningServices/workspaces/computes@2021-07-01" location = "eastus" body = jsonencode({ properties = { computeType = "ComputeInstance" disableLocalAuth = true properties = { vmSize = "STANDARD_NC6" } } }) }
后续步骤
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈