Разработка шаблонов 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
в шаблоне получите объект 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 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"
}
}
]