Не удается создать запись azure private dns A со своим IP-адресом с помощью шаблона ARM

#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.

В любом случае, моя проблема решена.