如何通过 Azure DNS 区域的 ARM 模板删除 DNS 记录
How to delete DNS records via ARM template for Azure DNS zone
我有一个 Azure DNS 区域的 ARM 模板,它有许多 Microsoft.Network/dnszones/*
资源用于 A
、CNAME
、TXT
记录等。我一直能够通过部署成功部署新记录和更改记录。
但是我刚刚注意到,当我删除与 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.
我有一个 Azure DNS 区域的 ARM 模板,它有许多 Microsoft.Network/dnszones/*
资源用于 A
、CNAME
、TXT
记录等。我一直能够通过部署成功部署新记录和更改记录。
但是我刚刚注意到,当我删除与 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.