Существовали ли пользовательские DNS-имена и привязки TLS во время повторного развертывания Azure ARM Template? - PullRequest
0 голосов
/ 26 марта 2020

Ситуация:

Мы развернули несколько идентичных экземпляров службы приложений для клиента, используя пользовательский шаблон ARM. Эти услуги размещены на собственной учетной записи Azure клиента. После нашего развертывания клиент пошел и вручную настроил настраиваемые DNS-имена и сертификаты TLS для всех веб-обращений. У нас нет доступа к их частным сертификатам (и мы этого не хотим):

enter image description here

Все работает, но ...

Проблема: Я обеспокоен тем, что конфигурации TLS будут сброшены, если / когда нам придется повторно развернуть наш шаблон ARM. Обычно я настраивал и перестраивал все экземпляры, когда клиент хочет изменить некоторые настройки. Мне нужно убедиться, что их конфигурация TLS не потеряна в такой ситуации.

У меня есть конфигурация ARM для привязок DNS и TLS (ссылающаяся на отпечаток частного сертификата), возможно, включение этих блоков в наш ARM шаблона достаточно для сохранения конфигурации клиента?

 {
     "type": "Microsoft.Web/sites/hostNameBindings",
     "apiVersion": "2018-11-01",
     "name": "[concat(parameters('site_name'), '/', parameters('site_name'), '.xxxxxx.com')]",
     "location": "West Europe",
     "dependsOn": [
         "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
     ],
     "properties": {
         "siteName": "site-name",
         "hostNameType": "Verified",
         "sslState": "SniEnabled",
         "thumbprint": "45DA3B...67"
     }
 }

 ...     

 "hostNameSslStates": [
 {
     "name": "[concat(parameters('site_name'), '.xxxxxx.com')]",
     "sslState": "SniEnabled",
     "thumbprint": "45DA3B...67",
     "hostType": "Standard"
 },
 ...

Вопрос: Есть ли способ сохранить и включить настройки TLS клиента, даже если у него нет доступа к частному сертификату? Я не смог найти точного ответа в документации Azure ARM.

Разъяснение: Я знаю, что есть более чистые способы автоматизации конфигурации DNS / TLS через ARM, но сейчас я не могу изменить настройки и мне нужно работать с тем, что у меня есть.

1 Ответ

0 голосов
/ 06 апреля 2020

Если вы не выполняете настройку SSL через ARM, лучше полностью исключить эти части из вашего шаблона ARM. У нас такая же ситуация, и она работает просто отлично. Убедитесь, что ARM выполняется в инкрементном режиме, иначе вы, вероятно, получите проблемы.

  • Не развертывайте ресурсы Microsoft.Web/sites/hostNameBindings с вашим шаблоном ARM
  • Удалите hostNameSslStates из ваш Microsoft.Web/sites ресурс

Вы можете протестировать его с помощью шаблона ARM так же просто, как this :

    {
      "apiVersion": "2018-11-01",
      "type": "Microsoft.Web/sites",
      "kind": "app",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
      ]
    }

Ваша конфигурация SSL не будет затронута, так что ваши привязки остаются нетронутыми. Это обычное поведение ARM. Если вы не укажете определенную часть шаблона, он не будет затронут. Однако, если вы укажете массив, он заменит весь массив. ARM не сливается в этом случае. Вот почему вы должны опустить hostNameSslStates.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...