Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как создать спецификацию шаблона с основным шаблоном и связанным шаблоном. Спецификации шаблонов используются для совместного использования шаблонов ARM с другими пользователями в организации. В этой статье показано, как создать спецификацию шаблона для упаковки основного шаблона и связанных шаблонов с помощью relativePath
свойства ресурса развертывания.
Предпосылки
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Замечание
Чтобы использовать спецификации шаблонов с Azure PowerShell, необходимо установить версию 5.0.0 или более позднюю. Чтобы использовать их с Azure CLI, воспользуйтесь версией 2.14.2 или более новой.
Создание связанных шаблонов
Создайте основной шаблон и связанный шаблон.
Чтобы связать шаблон, добавьте ресурс развертываний в основной шаблон. В свойстве templateLink
укажите относительный путь связанного шаблона в соответствии с путем родительского шаблона.
Связанный шаблон называется linkedTemplate.jsonи хранится в вложенной папке, называемой артефактами в пути, в котором хранится основной шаблон. Для относительного пути можно использовать одно из следующих значений:
./artifacts/linkedTemplate.json
/artifacts/linkedTemplate.json
artifacts/linkedTemplate.json
Свойство relativePath
всегда относительно файла шаблона, в котором relativePath
объявляется, поэтому если есть еще один linkedTemplate2.json, который вызывается из linkedTemplate.json и linkedTemplate2.json хранится в той же подпапке артефактов, относительный путь, указанный в linkedTemplate.json, просто linkedTemplate2.json
.
Создайте основной шаблон с помощью следующего JSON. Сохраните основной шаблон как azuredeploy.json на локальный компьютер. В этом руководстве предполагается, что вы сохранили путь c:\Templates\linkedTS\azuredeploy.js, но вы можете использовать любой путь.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "westus2", "metadata":{ "description": "Specify the location for the resources." } }, "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "metadata":{ "description": "Specify the storage account type." } } }, "variables": { "appServicePlanName": "[format('plan{0}', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Web/serverfarms", "apiVersion": "2022-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": "2022-09-01", "name": "createStorage", "properties": { "mode": "Incremental", "templateLink": { "relativePath": "artifacts/linkedTemplate.json" }, "parameters": { "storageAccountType": { "value": "[parameters('storageAccountType')]" } } } } ] }
Замечание
Версия API
Microsoft.Resources/deployments
должна быть 2020-06-01 или более поздней.Создайте каталог с именем артефактов в папке, в которой сохранен основной шаблон.
Создайте связанный шаблон с помощью следующего JSON:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "description": "Storage Account type" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } } }, "variables": { "storageAccountName": "[format('store{0}', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2022-09-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }
Сохраните шаблон как linkedTemplate.json в папке артефактов .
Создание спецификации шаблона
Спецификации шаблонов хранятся в группах ресурсов. Создайте группу ресурсов и создайте спецификацию шаблона со следующим скриптом. Имя спецификации шаблона — webSpec.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
New-AzTemplateSpec `
-Name webSpec `
-Version "1.0.0.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\linkedTS\azuredeploy.json"
По завершении вы можете просмотреть спецификацию шаблонов на портале Azure или с помощью следующего командлета:
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Развертывание спецификации шаблона
Теперь можно развернуть спецификацию шаблона. Развертывание спецификации шаблона аналогично развертыванию шаблона, который она содержит, за исключением того, что вы передаете идентификатор ресурса спецификации шаблона. Вы используете те же команды развертывания и, при необходимости, передаете значения параметров для спецификации шаблона.
New-AzResourceGroup `
-Name webRG `
-Location westus2
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name webSpec -Version "1.0.0.0").Versions.Id
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName webRG
Дальнейшие шаги
Дополнительные сведения о развертывании шаблона спецификации в качестве связанного шаблона см. в разделе Учебник. Развертывание шаблона спецификации в качестве связанного шаблона.