Как добавить задержку к развертыванию ресурса шаблона ARM?

#azure-resource-manager #arm-template

#azure-resource-manager #arm-template

Вопрос:

Я развертываю 2 ресурса, один из которых зависит от другого, но, похоже, это задержка между тем, как первый ресурс становится полностью работоспособным, а второй ресурс внедряется. Код приведен ниже. Первый развертываемый ресурс — это DNS-ресурс, указывающий на службу приложений, а второй ресурс добавляет пользовательскую привязку имени хоста к службе приложений. Проблема заключается в том, что, по-видимому, существует задержка до 30 секунд между тем, как служба приложений может проверить, доступна ли запись DNS для проверки записи. Можно ли как-то добавить небольшую задержку между развертываниями ресурсов, поскольку dependsOn в данном случае простого использования недостаточно

 {
         "apiVersion": "2020-09-01",
         "name": "[concat(parameters('webAppName'), '-mysite','/mysite.', variables('dnsZoneName'))]",
         "type": "Microsoft.Web/sites/hostNameBindings",
         "location": "[variables('location')]",
         "dependsOn": [
            "[resourceId('Microsoft.Network/dnszones/CNAME', variables('dnsZoneName'), 'mysite')]"
         ],
         "properties": {
            "domainId": null,
            "siteName": "[concat(parameters('webAppName'), '-mysite')]",
            "customHostNameDnsRecordType": "CName",
            "hostNameType": "Verified"
         }
      },
      {
         "type": "Microsoft.Network/dnszones/CNAME",
         "apiVersion": "2018-05-01",
         "dependsOn": [
            "[concat(parameters('webAppName'), '-mysite')]"
         ],
         "name": "[concat(variables('dnsZoneName'), '/mysite')]",
         "properties": {
            "TTL": 3600,
            "CNAMERecord": {
               "cname": "[reference(concat(parameters('webAppName'), '-mysite'), '2016-03-01', 'Full').properties.defaultHostName]"
            },
            "targetResource": {}
         }
      },
 

Ответ №1:

Нет, это невозможно сделать напрямую, но вы можете использовать пару альтернатив:

  1. Разверните фиктивный ресурс между ними, вы можете найти ресурс, который ничего не стоит
  2. Сделайте что-нибудь необычное с вложенными шаблонами, например, вызовите пустой вложенный шаблон 10 раз подряд (последовательно, а не параллельно)
  3. Используйте ресурс deploymentScript, чтобы просто выполнить sleep 30 команду.