Zelfstudie: Een sjabloonspecificatie maken met gekoppelde sjablonen

Meer informatie over het maken van een sjabloonspecificatie met een hoofdsjabloon en een gekoppelde sjabloon. U gebruikt sjabloonspecificaties om ARM-sjablonen te delen met andere gebruikers in uw organisatie. In dit artikel wordt beschreven hoe u een sjabloonspecificatie maakt om een hoofdsjabloon en de gekoppelde sjablonen te verpakken met behulp van de relativePath eigenschap van de implementatieresource.

Vereisten

Een Azure-account met een actief abonnement. Gratis een account maken

Notitie

Als u sjabloonspecificaties wilt Azure PowerShell, moet u versie 5.0.0 of hoger installeren. Voor gebruik met Azure CLI hebt u versie 2.14.2 of hoger nodig.

Gekoppelde sjablonen maken

Maak de hoofdsjabloon en de gekoppelde sjabloon.

Als u een sjabloon wilt koppelen, voegt u een implementatieresource toe aan uw hoofdsjabloon. Geef in de eigenschap het relatieve pad van de gekoppelde sjabloon templateLink op in overeenstemming met het pad van de bovenliggende sjabloon.

De gekoppelde sjabloon wordt linkedTemplate.jsop en wordt opgeslagen in een submap met de naam artefacten in het pad waar de hoofdsjabloon wordt opgeslagen. U kunt een van de volgende waarden gebruiken voor relativePath:

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

De eigenschap is altijd relatief ten opzichte van het sjabloonbestand waarin is gedeclareerd, dus als er een andere linkedTemplate2.jsis die wordt aangeroepen vanuit linkedTemplate.jsop en linkedTemplate2.jsop wordt opgeslagen in dezelfde submap artefacten, is het relativePath dat is opgegeven in linkedTemplate.jsop slechts relativePath relativePath linkedTemplate2.json .

  1. Maak de hoofdsjabloon met de volgende JSON. Sla de hoofdsjabloon azuredeploy.jsop uw lokale computer. In deze zelfstudie wordt ervan uitgenomen dat u hebt opgeslagen inc:\Templates\linkedTS\azuredeploy.js pad, maar u kunt elk pad gebruiken.

    {
      "$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')]"
              }
            }
          }
        }
      ]
    }
    

    Notitie

    De apiVersion van Microsoft.Resources/deployments moet 2020-06-01 of hoger zijn.

  2. Maak een map met de naam artefacten in de map waarin de hoofdsjabloon wordt opgeslagen.

  3. Maak de gekoppelde sjabloon met de volgende 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. Sla de sjabloon op linkedTemplate.jsin de map artefacten.

Sjabloonspecificatie maken

Sjablonenspecificaties worden opgeslagen in resourcegroepen. Maak een resourcegroep en maak vervolgens een sjabloonspecificatie met het volgende script. De naam van de sjabloonspecificatie is 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"

Wanneer u klaar bent, kunt u de sjabloonspecificatie bekijken vanuit de Azure Portal of met behulp van de volgende cmdlet:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Sjabloonspecificatie implementeren

U kunt nu de sjabloonspecificatie implementeren. De sjabloonspecificatie wordt op dezelfde manier geïmplementeerd als de sjabloon in de sjabloonspecificatie. Het enige verschil is dat u de resource-id van de sjabloonspecificatie doorgeeft. U gebruikt dezelfde implementatieopdrachten en geeft indien nodig de parameterwaarden voor de sjabloonspecificatie door.

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

Volgende stappen

Zie Zelfstudie: Een sjabloonspecificatie implementeren als gekoppelde sjabloon voor meer informatie over het implementeren van een sjabloonspecificatie als een gekoppelde sjabloon.