Бицеп добавляет записи DNS, говорящие, что они уже существуют, хотя их нет

Я использую Bicep для развертывания инфраструктуры наших приложений, и мы пытаемся добавить DNS-записи проверки подлинности домена SendGrid в Bicep, чтобы мы могли развертывать их в разных средах или в новой среде, если захотим, заменить значения в файле parameters.{environment}.json и запустить его.

Мы развертываем нашу среду с помощью действий GitHub, и до сих пор, до этого момента, не возникло никаких проблем, из-за которых я до сих пор чувствовал себя застрявшим: наш регистратор домена является другой стороной, но наша NS была изменена на Azure, поэтому мы управляем вся платформа через Azure.

resource dnsZonesNameResouce 'Microsoft.Network/dnsZones@2023-07-01-preview' existing = {
  name: dnsZonesName
}

Имя зоны DNS передается в модуль в качестве параметра.

Ниже приведен пример создания записи DNS с использованием этого ресурса в качестве родительского.

resource dnsZoneSendGridS1 'Microsoft.Network/dnsZones/CNAME@2023-07-01-preview' = {
  parent: dnsZonesNameResouce 
  name: sendGridS1Name
  properties: {
    TTL: 3600
    TXTRecords: [
      {
        value: [
          sendGridS1Value
        ]
      }
    ]
    targetResource: {}
  }
}

Все эти параметры передаются, важно то, что ни одна из этих записей не существует в домене, которому я пытаюсь их назначить. Когда дело доходит до запуска этого Bicep в соответствующем действии GitHub, я всегда получаю несколько ошибок, и все они в том же формате

"/subscriptions/{subscriptionId}/resourceGroups/rg-common/providers/Microsoft.Network/dnsZones/some.domain.com/CNAME/em3203.some.domain.com","message":"***\r\n \"code\": \"BadRequest\",\r\n \"message\": \"Resource records can contain only one type of record specified.

Эта ошибка повторяется несколько раз для каждой отдельной DNS-записи, которую я пытаюсь вставить из этого модуля. Я привел фрагмент выше, эти записи НЕ существуют в домене Azure, в чем я абсолютно уверен, однако Bicep настаивает на том, что оно делает.

Запуск what-if показывает результат, который выглядит именно так, как мне нужно для запуска в нашей среде, однако, когда мы на самом деле запускаем его, появляется эта ошибка.

Любая помощь приветствуется!

Я попробовал изменить версию resource@..., чтобы проверить, есть ли несоответствие, но это не дало никаких результатов.

Бег what-if показывает, чего я ожидал от бицепса, который я написал.

если это запись CNAME, вам следует использовать свойство CNAMERecord, верно? Learn.microsoft.com/en-us/azure/templates/microsoft.network/‌​…

Thomas 02.07.2024 00:34

Если в вашем сообщении вы используете свойство TXTRecords, предназначенное для записи TXT? Извините, я не слишком знаком с Azure DNS, поэтому игнорируйте, если это не имеет значения.

Thomas 02.07.2024 00:35

@Thomas проверяет Microsoft DNS CNAME там не упоминается CNAMERecord он просто говорит CNAME - Я попробую, так как попытка не повредит!

Tom 02.07.2024 10:56

@Томас, к сожалению CNAMERecord не сработало

Tom 02.07.2024 11:07

та же ошибка или другая?

Thomas 02.07.2024 11:42

Ошибка изменилась, теперь их две: первая ошибка: Warning BCP081: Resource type "Microsoft.Network/dnsZones/CNAMERecord@2023-07-01-preview" does not have types available. Bicep is unable to validate resource properties prior to deployment, but this will not block the resource from being deployed и вторая ошибка: The client '{clientId}' with object id '{objectId}' does not have permission to perform action 'Microsoft.Network/dnsZones/CNAMERecord/write' at scope '{subscriptionId}'

Tom 02.07.2024 12:09

ошибка выглядит лучше, если честно

Thomas 02.07.2024 12:11

Пишет, что у вас нет разрешения на обновление зоны DNS.

Thomas 02.07.2024 12:12

так что я предполагаю, что как только вы исправите, это должно работать

Thomas 02.07.2024 12:13

С надеждой! Просто пытаюсь разобраться с разрешениями для него, и я сообщу вам, сработает ли это, и вы сможете опубликовать свое решение, и я отмечу его как ответ.

Tom 02.07.2024 12:38

Возможно, вам не хватает разрешения роли «Участник зоны DNS» @Tom

Vinay B 03.07.2024 15:32
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
11
91
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Бицеп добавляет записи DNS, говорящие, что они уже существуют, хотя их нет

Блокировщик, который вы упомянули в комментариях Resource type "Microsoft.Network/dnsZones/CNAMERecord@2023-07-01-preview", не имеет доступных типов из-за неспособности бицепса не проверять свойства перед развертыванием, а вторая ошибка связана с отсутствием разрешения роли Участник зоны DNS, которую необходимо назначить вашему SP или пользователю. .

Я также согласился с Томасом по поводу упомянутого им вопроса о том, как мы используем TXTRecords в конфигурации бицепса.

основной бицепс:

param dnsZonesName string
param sendGridS1Name string
param sendGridS1Value string


resource dnsZonesNameResouce 'Microsoft.Network/dnsZones@2023-07-01-preview' existing = {
  name: dnsZonesName
}


resource dnsZoneSendGridS1 'Microsoft.Network/dnsZones/CNAME@2023-07-01-preview' = {
  parent: dnsZonesNameResouce 
  name: sendGridS1Name
  properties: {
    TTL: 3600
    CNAMERecord: {
      cname: sendGridS1Value
    }
  }
}

параметры.json:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "dnsZonesName": {
        "value": "vkdomain.com"
      },
      "sendGridS1Name": {
        "value": "em3203.vkdomain.com"
      },
      "sendGridS1Value": {
        "value": "sendgrid.net"
      }
    }
  }

У меня есть уже существующая DNS-запись, созданная vkdomain.com.

Развертывание выполнено успешно:

Ссылка:

Microsoft.Network/dnsZones — шаблон Bicep, ARM и ссылка на Terraform AzAPI | Microsoft Learn

Это справедливо, и вы были правы с CNAMERecord

Tom 04.07.2024 16:09

Другие вопросы по теме

Похожие вопросы

Импортировать файлы в рабочую область блоков данных
Получение исключения «Невозможно динамически создать экземпляр типа Microsoft.Azure.Functions.Worker.Http.HttpRequestData». в функции Azure
Можем ли мы предоставить участнику данных BLOB-объектов хранилища разрешение на регистрацию приложения Azure?
Приложению функции Azure Python не удается импортировать пакеты при развертывании через Azure DevOps
Azure Blob: как автоматизировать преобразование архивного хранилища Azure в холодный/горячий уровень, отправить ссылку для загрузки, как только она станет доступна, и повторно заархивировать через 72 часа?
Код ошибки CS:0021 в проекте функции Azure в VS для запуска API Microsoft Graph с функциями Azure
Localhost:300/api не работает: «Эта страница не работает»
Секреты безопасно внедряются в Dockerfile во время сборки .NET
Хранилище ключей, созданное с использованием политики доступа с использованием BICEP, создает составную идентификацию
Назначение политики срока службы токена приложению в Microsoft EntraID, похоже, не имеет никакого эффекта