#azure #azure-resource-manager #azure-dns
Вопрос:
Я пытаюсь создать запись A в зоне Azure private DNS с помощью an ARM template
. Создание записи прошло успешно, но без ее IP-адреса, ни TTL. Мой шаблон ниже:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"DNSZoneName": {
"type": "string",
"defaultValue": "privatelink.database.windows.net",
"metadata": {
"description": "The name of the DNS zone. Must have at least 2 segements, e.g. hostname.org"
}
},
"newRecordName": {
"type": "string",
"defaultValue": "pe-sql3",
"metadata": {
"description": "The name of the DNS record to be created. The name is relative to the zone, not the FQDN."
}
}
},
"resources": [
{
"type": "Microsoft.Network/privateDnsZones/A",
"apiVersion": "2018-09-01",
"name": "[concat(parameters('DNSZoneName'), '/', parameters('newRecordName'))]",
"location": "global",
"properties": {
"TTL": 3600,
"ARecords": [
{
"ipv4Address": "10.0.0.1"
}
]
}
}
]
}
Моя команда New-AzResourceGroupDeployment -ResourceGroupName myRg -TemplateFile deploy.json
Вот скриншот записи A с портала:
Есть идеи?
Ответ №1:
Я думаю, что у вас состояние гонки. Добавьте dpendsOn.
"dependsOn": [
"[parameters('DNSZoneName')]"
],
Вот так:
[РЕДАКТИРОВАТЬ: укажите также ресурс зоны DNS]
"resources": [
{
"type": "Microsoft.Network/privateDnsZones",
"apiVersion": "2018-05-01",
"name": "[parameters('DNSZoneName')]",
"location": "global"
},
{
"type": "Microsoft.Network/privateDnsZones/A",
"apiVersion": "2018-09-01",
"name": "[concat(parameters('DNSZoneName'), '/', parameters('newRecordName'))]",
"location": "global",
"dependsOn": [
"[parameters('DNSZoneName')]"
],
"properties": {
"TTL": 3600,
"ARecords": [
{
"ipv4Address": "10.0.0.1"
}
]
}
}
]
Комментарии:
1. Когда я добавляю его, я получаю следующую ошибку: New-AzResourceGroupDeployment: 7:06:24 AM — Ошибка: Code = InvalidTemplate; Сообщение = Ошибка проверки шаблона развертывания: «Ссылка на шаблон»privatelink.database.windows.net ‘недопустимо: не удалось найти ресурс шаблона или копию ресурса с этим именем. Пожалуйста, смотрите aka.ms/arm-template-expressions/#reference для получения подробной информации об использовании.’.
2. @MoonHorse Сообщение об ошибке означает, что для DNSZoneName нет определения ресурса . Я обновил свой ответ, включив его.
3. Я уже пробовал это. Тот же результат. Создается запись без конфигурации IP и TLS
Ответ №2:
Я писал TTL и ARecords заглавными буквами. Это должно было быть с ttl и aRecords:
"properties": {
"ttl": 3600,
"aRecords": [
{
"ipv4Address": "1.2.3.4"
}
]
}
}
Но дело в том, что, когда она написана заглавными буквами, REST API не выдает ошибку и не принимает запрос. Обычно он должен возвращать ошибку http 400.
В любом случае, моя проблема решена.