Разработка шаблонов для Azure Stack Hub с помощью Azure Resource Manager

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

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

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

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

Так как Azure Stack Hub размещается в центре обработки данных, он имеет разные пространства имен конечной точки службы, чем общедоступное облако Azure. В результате жестко заданные общедоступные конечные точки в шаблонах Azure Resource Manager дают сбой при попытке их развертывания в Azure Stack Hub. Вы можете динамически создавать конечные точки службы с помощью функций reference и concatenate для получения значений от поставщика ресурсов во время развертывания. Например, вместо жёсткого кодирования blob.core.windows.net в вашем шаблоне, получите primaryEndpoints.blob, чтобы динамически задать конечную точку 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 и Azure Stack Hub. Для каждого ресурса требуется атрибут apiVersion, определяющий предлагаемые возможности. Чтобы обеспечить совместимость версий API в Azure Stack Hub, для каждого поставщика ресурсов допустимы следующие версии API:

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

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

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

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

Эти функции недоступны в Azure Stack Hub:

  • Пропустить
  • Брать

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

Шаблоны 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"
  }
}
]

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