Поделиться через


Учебник. Развертывание спецификации шаблона как связанного шаблона

Узнайте, как развернуть существующую спецификацию шаблона в связанном развертывании. Спецификации шаблонов можно использовать для совместного использования шаблонов 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

Следующие шаги

Дополнительные сведения о создании спецификации шаблона, включающей связанные шаблоны, см. в статье Создание спецификации для связанного шаблона.