Delen via


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 leest u 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 gebruiken met 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 templateLink eigenschap het relatieve pad van de gekoppelde sjabloon op overeenkomstig het pad van de bovenliggende sjabloon.

De gekoppelde sjabloon wordt linkedTemplate.json genoemd en wordt opgeslagen in een submap met de naam artefacten in het pad waarin de hoofdsjabloon wordt opgeslagen. U kunt een van de volgende waarden gebruiken voor het relatievePath:

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

De relativePath eigenschap is altijd relatief ten opzichte van het sjabloonbestand waar relativePath wordt gedeclareerd, dus als er nog een linkedTemplate2.json is die wordt aangeroepen vanuit linkedTemplate.json en linkedTemplate2.json wordt opgeslagen in dezelfde submap voor artefacten, is het relatievePath dat is opgegeven in linkedTemplate.json alleen linkedTemplate2.json.

  1. Maak de hoofdsjabloon met de volgende JSON. Sla de hoofdsjabloon op als azuredeploy.json op uw lokale computer. In deze zelfstudie wordt ervan uitgegaan dat u het pad c:\Templates\linkedTS\azuredeploy.json hebt opgeslagen, 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": "[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')]"
              }
            }
          }
        }
      ]
    }
    

    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": "[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')]"
        }
      }
    }
    
  4. Sla de sjabloon op als linkedTemplate.json in 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 Azure Portal of met behulp van de volgende cmdlet:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Sjabloonspecificatie implementeren

U kunt nu de sjabloonspecificatie implementeren. Het implementeren van de sjabloonspecificatie is net zoals het implementeren van de sjabloon die deze bevat, behalve dat u de resource-id van de sjabloonspecificatie doorgeeft. U gebruikt dezelfde implementatieopdrachten en geeft indien nodig parameterwaarden door voor de sjabloonspecificatie.

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 een gekoppelde sjabloon voor meer informatie over het implementeren van een sjabloonspecificatie.