首页 > 解决方案 > 如何使用 ARM 模板将 Azure DNS A 记录替换为 CNAME 记录

问题描述

我正在尝试使用 ARM 模板将现有的 DNS A 记录替换为具有相同名称的 CNAME 记录。我在 DNS 区域中有 A 记录,如下所示

我想在同一个 DNS 区域中有 CNAME 记录,应该如下所示

目前,我的 ARM 模板如下所示,创建 A 记录

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "resources": [
    {
      "type": "Microsoft.Network/dnszones/A",
      "apiVersion": "2018-05-01",
      "name": "mylink",
      "properties": {
        "TTL": 60,
        "ARecords": [
          {
            "ipv4Address": "10.22.31.3"
          }
        ]
      }
    },
  ]
}

我试图向这个模板添加另一个 CNAME 记录,这在部署时出现错误。

“代码”:“冲突”,

"message": "无法创建 CNAME 记录,因为该区域中已存在另一条同名记录。"

标签: azure-resource-managercnameazure-templateazure-dns

解决方案


正如错误显示的那样,我们无法CNAME在同一区域中创建与现有记录集相同的记录名称,因为CNAME 记录集不能与其他具有相同名称的记录集共存。参考这里

因此,在这种情况下,我们需要删除旧A记录或创建CNAME具有不同记录名称的记录。

使用 ARM 模板部署资源时,您可以指定部署是增量更新还是完整更新。默认情况下,部署使用增量模式。您可以考虑使用完整模式来删除资源组中存在但未在模板中指定的资源。

但是子资源类型 likednszones / *不支持完全模式删除。 在此处输入图像描述

综上所述,我们不能直接使用 ARM 模板将 Azure DNS A 记录替换为 CNAME 记录。我们需要先使用 Azure 门户或其他 cmdlet 删除 A 记录,然后像往常一样使用 ARM 模板创建 CNAME 记录。


推荐阅读