Учебник. Развертывание спецификации шаблона как связанного шаблона
Узнайте, как развернуть существующую спецификацию шаблона в связанном развертывании. Спецификации шаблонов можно использовать для совместного использования шаблонов ARM с другими пользователями в организации. После создания спецификацию шаблона можно развернуть с помощью Azure PowerShell или Azure CLI. Спецификацию шаблона также можно развернуть как часть своего решения с помощью связанного шаблона.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Примечание.
Чтобы использовать спецификацию шаблона с Azure PowerShell, необходимо установить версию 5.0.0 или более новую. Чтобы использовать их с Azure CLI, воспользуйтесь версией 2.14.2 или более новой.
Создание спецификации шаблона
Следуйте инструкциям в документе Краткое руководство. Создание и развертывание спецификации шаблона, чтобы создать шаблон спецификации для развертывания учетной записи хранения. В следующем разделе потребуются имя группы ресурсов для спецификации шаблона, имя спецификации шаблона и версия спецификации шаблона.
Создание основного шаблона
Чтобы развернуть шаблон спецификации в шаблоне ARM, добавьте ресурс развертываний в основной шаблон. В свойстве templateLink
укажите идентификатор ресурса спецификации шаблона. Создайте шаблон со следующей нотацией объектов JavaScript, которая называется azuredeploy.json. В этом учебнике предполагается, что шаблон сохраняется по пути C:\Templates\deployTS\azuredeploy.json, однако можно использовать любой путь.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"tsResourceGroup":{
"type": "string",
"metadata": {
"Description": "Specifies the resource group name of the template spec."
}
},
"tsName": {
"type": "string",
"metadata": {
"Description": "Specifies the name of the template spec."
}
},
"tsVersion": {
"type": "string",
"defaultValue": "1.0.0.0",
"metadata": {
"Description": "Specifies the version the template spec."
}
},
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"metadata": {
"Description": "Specifies the storage account type required by the template spec."
}
}
},
"variables": {
"appServicePlanName": "[concat('plan', uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2016-09-01",
"name": "[variables('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "B1",
"tier": "Basic",
"size": "B1",
"family": "B",
"capacity": 1
},
"kind": "linux",
"properties": {
"perSiteScaling": false,
"reserved": true,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
},
"parameters": {
"storageAccountType": {
"value": "[parameters('storageAccountType')]"
}
}
}
}
],
"outputs": {
"templateSpecId": {
"type": "string",
"value": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
}
}
}
Идентификатор спецификации шаблона создается с помощью функции resourceID()
. Аргумент группы ресурсов в функции resourceID() не обязателен, если спецификация шаблона находится в той же группе ресурсов текущего развертывания. Можно также напрямую передать идентификатор ресурса в качестве параметра. Для получения идентификатора используйте:
$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id
Для передачи параметров спецификации шаблона используется следующий синтаксис:
"parameters": {
"storageAccountType": {
"value": "[parameters('storageAccountType')]"
}
}
Примечание.
Версия API Microsoft.Resources/deployments
должна быть 2020-06-01 или более поздней.
Развертывание шаблона
При развертывании связанного шаблона развертывается как веб-приложение, так и учетная запись хранения. Развертывание аналогично развертыванию других шаблонов ARM.
New-AzResourceGroup `
-Name webRG `
-Location westus2
New-AzResourceGroupDeployment `
-ResourceGroupName webRG `
-TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
-tsResourceGroup templateSpecRg `
-tsName storageSpec `
-tsVersion 1.0
Следующие шаги
Дополнительные сведения о создании спецификации шаблона, включающей связанные шаблоны, см. в статье Создание спецификации для связанного шаблона.