Разработка шаблонов Azure Resource Manager для Azure Stack Hub

При разработке приложения очень важно обеспечить переносимость шаблона между Azure и Azure Stack Hub. В этой статье приводятся рекомендации по разработке шаблонов Azure Resource Manager. С помощью этих шаблонов можно создавать прототипы приложения и тестировать их развертывание в Azure без доступа к среде Azure Stack Hub.

Доступность поставщика ресурсов

Шаблон, который вы планируете развернуть, должен использовать только службы Microsoft Azure, которые уже доступны или предоставляются в виде предварительной версии в Azure Stack Hub.

Общедоступные пространства имен

Так как среда Azure Stack Hub размещена в центре обработки данных, она использует собственные пространства имен конечных точек службы, а не пространства общедоступного облака Azure. Поэтому при попытке развернуть в Azure Stack Hub встроенные общедоступные конечные точки в шаблонах Azure Resource Manager происходит ошибка. Вы можете динамически создавать конечные точки службы, используя функции reference и concatenate для получения значений от поставщика ресурсов во время развертывания. Например, чтобы не указывать blob.core.windows.net в шаблоне, получите blob.core.windows.net для динамической настройки конечной точки osDisk.URI.

"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
 '/',variables('OSDiskName'),'.vhd')]"}}

Управление версиями API

В Azure и Azure Stack Hub могут быть разные версии служб Azure. Для каждого ресурса требуется атрибут apiVersion, который определяет доступные возможности. Чтобы обеспечить совместимость версий API в Azure Stack Hub, ниже приведены допустимые версии API для каждого поставщика ресурсов.

Поставщик ресурсов версия_API
Вычисления 2015-06-15
Сеть 2015-06-15, 2015-05-01-preview
Память 2016-01-01, 2015-06-15, 2015-05-01-preview
Хранилище ключей 2015-06-01
Служба приложений 2015-08-01

Функции шаблонов

Функции шаблонов диспетчера ресурсов Azure позволяют создавать динамические шаблоны. Например, можно использовать функции для выполнения следующих задач.

  • Сцепка или обрезание строк.
  • Указание ссылок на значения из других ресурсов.
  • Итерация по ресурсам для развертывания нескольких экземпляров.

В Azure Stack Hub недоступны следующие функции:

  • Пропустить
  • Take

Расположение ресурса

Шаблоны Azure Resource Manager используют атрибут location для размещения ресурсов во время развертывания. В Azure расположения называются регионами, например "Западная часть США"или "Южная Америка". В Azure Stack Hub используются другие расположения, так как Azure Stack Hub находится в вашем центре обработки данных. Чтобы шаблоны можно было передавать между Azure и Azure Stack Hub, необходимо указать расположение группы ресурсов при развертывании отдельных ресурсов. Для этого используйте функцию [resourceGroup().Location], чтобы ресурсы наследовали расположение группы ресурсов. В следующем фрагменте кода приведен пример использования этой функции при развертывании учетной записи хранения.

"resources": [
{
  "name": "[variables('storageAccountName')]",
  "type": "Microsoft.Storage/storageAccounts",
  "apiVersion": "[variables('apiVersionStorage')]",
  "location": "[resourceGroup().location]",
  "comments": "This storage account is used to store the VM disks",
  "properties": {
  "accountType": "Standard_LRS"
  }
}
]

Дальнейшие действия