Självstudie: Skapa en mallspecifikation med länkade mallar

Lär dig hur du skapar en mallspecifikation med en huvudmall och en länkad mall. Du använder mallspecifikationer för att dela ARM-mallar med andra användare i din organisation. Den här artikeln visar hur du skapar en mallspecifikation för att paketera en huvudmall och dess länkade mallar med hjälp relativePath av egenskapen för distributionsresursen.

Förutsättningar

Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.

Kommentar

Om du vill använda mallspecifikationer med Azure PowerShell måste du installera version 5.0.0 eller senare. Om du vill använda det med Azure CLI använder du version 2.14.2 eller senare.

Skapa länkade mallar

Skapa huvudmallen och den länkade mallen.

Om du vill länka en mall lägger du till en distributionsresurs i huvudmallen. I egenskapen templateLink anger du den relativa sökvägen för den länkade mallen i enlighet med sökvägen till den överordnade mallen.

Den länkade mallen kallas linkedTemplate.json och lagras i en undermapp som kallas artefakter i sökvägen där huvudmallen lagras. Du kan använda något av följande värden för relativePath:

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

Egenskapen relativePath är alltid relativ till mallfilen där relativePath deklareras, så om det finns en annan linkedTemplate2.json som anropas från linkedTemplate.json och linkedTemplate2.json lagras i samma artefaktundermapp är den relativePath som anges i linkedTemplate.json bara linkedTemplate2.json.

  1. Skapa huvudmallen med följande JSON. Spara huvudmallen som azuredeploy.json till den lokala datorn. Den här självstudien förutsätter att du har sparat en sökväg c:\Templates\linkedTS\azuredeploy.json men du kan använda valfri sökväg.

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

    Kommentar

    ApiVersion för Microsoft.Resources/deployments måste vara 2020-06-01 eller senare.

  2. Skapa en katalog med namnet artifacts i mappen där huvudmallen sparas.

  3. Skapa den länkade mallen med följande 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. Spara mallen som linkedTemplate.json i mappen artifacts .

Skapa mallspecifikation

Mallspecifikationer lagras i resursgrupper. Skapa en resursgrupp och skapa sedan en mallspecifikation med följande skript. Mallspecifikationens namn är 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"

När du är klar kan du visa mallspecifikationen från Azure-portalen eller med hjälp av följande cmdlet:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Distribuera mallspecifikation

Nu kan du distribuera mallspecifikationen. Att distribuera mallspecifikationen är precis som att distribuera mallen som den innehåller, förutom att du skickar in resurs-ID:t för mallspecifikationen. Du använder samma distributionskommandon och skickar vid behov in parametervärden för mallspecifikationen.

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

Nästa steg

Mer information om hur du distribuerar en mallspecifikation som en länkad mall finns i Självstudie: Distribuera en mallspecifikation som en länkad mall.