azure-resource-manager - 如何使用 ARM 模板将 Azure DNS A 记录替换为 CNAME 记录
问题描述
我正在尝试使用 ARM 模板将现有的 DNS A 记录替换为具有相同名称的 CNAME 记录。我在 DNS 区域中有 A 记录,如下所示
- 名称 - mylink
- 价值 - 10.22.31.3
- 类型 - A
- TTL - 60
我想在同一个 DNS 区域中有 CNAME 记录,应该如下所示
- 名称 - mylink
- 价值 - cos.myaddress.test.net
- 类型 - CNAME
- TTL - 60
目前,我的 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 记录,因为该区域中已存在另一条同名记录。"
解决方案
正如错误显示的那样,我们无法CNAME
在同一区域中创建与现有记录集相同的记录名称,因为CNAME 记录集不能与其他具有相同名称的记录集共存。参考这里。
因此,在这种情况下,我们需要删除旧A
记录或创建CNAME
具有不同记录名称的记录。
使用 ARM 模板部署资源时,您可以指定部署是增量更新还是完整更新。默认情况下,部署使用增量模式。您可以考虑使用完整模式来删除资源组中存在但未在模板中指定的资源。
但是子资源类型 likednszones / *
不支持完全模式删除。
综上所述,我们不能直接使用 ARM 模板将 Azure DNS A 记录替换为 CNAME 记录。我们需要先使用 Azure 门户或其他 cmdlet 删除 A 记录,然后像往常一样使用 ARM 模板创建 CNAME 记录。
推荐阅读
- python - 尝试在特定条件下查找名称
- r - 系统命令在 R Studio 中失败,但在终端中的 R 中工作
- c# - Dapper 是否支持 sql_variant DataType
- javacard - JavaCard Spec 2.2.2 及更低版本中 cap-file 中的可选描述符组件
- wordpress - 如何在wordpress菜单中添加搜索按钮
- python - 用两个 slug 反转一个 url
- javascript - 为什么本地存储的条件不起作用?
- python - 根据另一个列表对元组列表进行排序
- python - 熊猫:如果组的大小大于平均值,则丢弃行
- android - 带有 SAML 的 Android Cognito (O365)