Kurz: Vytvoření specifikace šablony s propojenými šablonami

Zjistěte, jak vytvořit specifikace šablony s hlavní šablonou a propojenou šablonou. Specifikace šablon slouží ke sdílení šablon ARM s ostatními uživateli ve vaší organizaci. Tento článek ukazuje, jak vytvořit specifikace šablony pro zabalení hlavní šablony a jejích propojených šablon pomocí relativePath vlastnosti prostředku nasazení.

Požadavky

Účet Azure s aktivním předplatným. Vytvořte si účet zdarma.

Poznámka

Pokud chcete se specifikací šablon Azure PowerShell, musíte nainstalovat verzi 5.0.0 nebo novější. Pokud ho chcete používat s Azure CLI, použijte verzi 2.14.2 nebo novější.

Vytvoření propojených šablon

Vytvořte hlavní šablonu a propojenou šablonu.

Pokud chcete šablonu propojit, přidejte do hlavní šablony prostředek nasazení. Ve vlastnosti zadejte relativní cestu propojené šablony v souladu s templateLink cestou k nadřazené šabloně.

Propojená šablona se nazývá linkedTemplate.jsna a je uložená v podsložce s názvem artifacts v cestě, kde je uložena hlavní šablona. Pro relativePath můžete použít jednu z následujících hodnot:

  • ./artifacts/linkedTemplate.json
  • /artifacts/linkedTemplate.json
  • artifacts/linkedTemplate.json

Vlastnost je vždy relativní vzhledem k souboru šablony, kde je deklarována, takže pokud existuje další linkedTemplate2.jsna , který je volán ze souboru linkedTemplate.json a linkedTemplate2.json je uložen ve stejné relativePath relativePath podsložce artefaktů, relativní cesta zadaná v souboru linkedTemplate.json je pouze linkedTemplate2.json .

  1. Vytvořte hlavní šablonu s následujícím kódem JSON. Uložte hlavní šablonu azuredeploy.jsdo místního počítače. Tento kurz předpokládá, že jste uložili do cesty, c:\Templates\linkedTS\azuredeploy.js, ale můžete použít libovolnou cestu.

    {
      "$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": "[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": {
              "relativePath": "artifacts/linkedTemplate.json"
            },
            "parameters": {
              "storageAccountType": {
                "value": "[parameters('storageAccountType')]"
              }
            }
          }
        }
      ]
    }
    

    Poznámka

    ApiVersion pro Microsoft.Resources/deployments musí být 2020-06-01 nebo novější.

  2. Ve složce, kde je uložena hlavní šablona, vytvořte adresář s názvem artifacts.

  3. Vytvořte propojenou šablonu s následujícím kódem 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": "[concat('store', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-04-01",
          "name": "[variables('storageAccountName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "[parameters('storageAccountType')]"
          },
          "kind": "StorageV2",
          "properties": {}
        }
      ],
      "outputs": {
        "storageAccountName": {
          "type": "string",
          "value": "[variables('storageAccountName')]"
        }
      }
    }
    
  4. Uložte šablonu jakolinkedTemplate.jsve složce artifacts.

Vytvoření specifikace šablony

Specifikace šablon se ukládají ve skupinách prostředků. Vytvořte skupinu prostředků a pak vytvořte specifikace šablony pomocí následujícího skriptu. Název specifikace šablony je 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"

Až budete hotovi, můžete specifikace šablony zobrazit z Azure Portal nebo pomocí následující rutiny:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Specifikace šablony nasazení

Teď můžete nasadit specifikace šablony. Nasazení specifikace šablony je stejně jako nasazení šablony, kterou obsahuje, s tím rozdílem, že předáte ID prostředku specifikace šablony. Použijete stejné příkazy nasazení a v případě potřeby předáte hodnoty parametrů specifikace šablony.

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

Další kroky

Další informace o nasazení specifikace šablony jako propojené šablony najdete v tématu Kurz: Nasazení specifikace šablony jako propojené šablony.