如何通过 Azure DNS 区域的 ARM 模板删除 DNS 记录

How to delete DNS records via ARM template for Azure DNS zone

我有一个 Azure DNS 区域的 ARM 模板,它有许多 Microsoft.Network/dnszones/* 资源用于 ACNAMETXT 记录等。我一直能够通过部署成功部署新记录和更改记录。

但是我刚刚注意到,当我删除与 ARM 模板中的某些 DNS 记录对应的资源时,尽管部署成功,但该模板的部署实际上并没有删除 Azure DNS 区域中的记录。

这似乎破坏了 ARM 模板的声明性质,如果我删除了模板中的资源并且它在部署后仍然存在且没有错误。

还是我误解了资源提供者的工作方式?

ARM模板部署有两种模式:

  • 增量: 在增量模式下,资源管理器保留资源组中存在但未在模板中指定的资源不变。模板中的资源添加到资源组。

  • 完全:在完全模式下,资源管理器删除资源组中存在但未在模板中指定的资源。

默认模式是增量,这就是为什么您没有看到删除的资源被删除的原因。

要在使用 PowerShell 部署时将 deployment mode 显式设置为 Complete,请将 Mode 参数用作:

New-AzResourceGroupDeployment `
  -Mode Complete `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile c:\MyTemplates\storage.json

Tip: Always use the what-if operation before deploying a template in complete mode. What-if shows you which resources will be created, deleted, or modified. Use what-if to avoid unintentionally deleting resources.