Учебник. Создание спецификации шаблона со связанными шаблонами.
Узнайте, как создать спецификацию шаблона с основным шаблоном и связанным шаблоном. Спецификации шаблонов можно использовать для совместного использования шаблонов ARM с другими пользователями в организации. В этой статье показано, как создать спецификацию шаблона для упаковки основного шаблона и связанных с ним шаблонов, используя relativePath
свойство ресурса развертывания.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Примечание.
Чтобы использовать спецификацию шаблона с Azure PowerShell, необходимо установить версию 5.0.0 или более новую. Чтобы использовать их с Azure CLI, воспользуйтесь версией 2.14.2 или более новой.
Создание связанных шаблонов
Создание основного и связанного шаблонов.
Чтобы создать связь с шаблоном, добавьте ресурс развертываний в основной шаблон. В свойстве templateLink
укажите относительный путь к связанному шаблону в соответствии с путем к родительскому шаблону.
Связанный шаблон называется linkedTemplate.json и хранится во вложенной папке с именем artifacts, в пути, где хранится основной шаблон. Для параметра relativePath можно использовать одно из следующих значений.
./artifacts/linkedTemplate.json
/artifacts/linkedTemplate.json
artifacts/linkedTemplate.json
relativePath
Свойство всегда имеет относительный путь к файлу шаблона relativePath
, где объявлено, поэтому, если имеется другой linkedTemplate2.json, вызванный из linkedTemplate.json, и linkedTemplate2.json хранится в той же вложенной папке artifacts, relativePath, указанный в linkedTemplate.json, — это просто linkedTemplate2.json
.
Создайте основной шаблон со следующим кодом JSON. Сохраните основной шаблон под именем azuredeploy.json на локальном компьютере. В этом учебнике предполагается, что шаблон сохраняется по пути C:\Templates\linkedTS\azuredeploy.json, однако можно использовать любой путь.
{ "$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 или более поздней.Создайте каталог с именем artifacts в папке, в которой сохранен основной шаблон.
Создайте связанный шаблон со следующим кодом 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 в папке artifacts.
Создание спецификации шаблона
Спецификации шаблонов хранятся в группах ресурсов. Создайте группу ресурсов, а затем создайте шаблон спецификации со следующим скриптом. Имя спецификации шаблона — 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
Следующие шаги
Дополнительные сведения о развертывании шаблона спецификации в качестве связанного шаблона см. в разделе Учебник. Развертывание шаблона спецификации в качестве связанного шаблона.