Dela via


Självstudie: Distribuera en mallspecifikation som en länkad mall

Lär dig hur du distribuerar en befintlig mallspecifikation med hjälp av en länkad distribution. Du använder mallspecifikationer för att dela ARM-mallar med andra användare i din organisation. När du har skapat en mallspecifikation kan du distribuera mallspecifikationen med hjälp av Azure PowerShell eller Azure CLI. Du kan också distribuera mallspecifikationen som en del av din lösning med hjälp av en länkad mall.

Förutsättningar

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

Kommentar

Om du vill använda mallspecifikation 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 en mallspecifikation

Följ snabbstart: Skapa och distribuera mallspecifikation för att skapa en mallspecifikation för distribution av ett lagringskonto. Du behöver resursgruppens namn på mallspecifikationen, mallspecifikationens namn och mallspecifikationsversionen i nästa avsnitt.

Skapa huvudmallen

Om du vill distribuera en mallspecifikation i en ARM-mall lägger du till en distributionsresurs i huvudmallen. I egenskapen templateLink anger du resurs-ID för en mallspecifikation. Skapa en mall med följande JSON med namnet azuredeploy.json. Den här självstudien förutsätter att du har sparat en sökväg c:\Templates\deployTS\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": "[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'))]"
    }
  }
}

Mallspecifikations-ID:t genereras med hjälp resourceID() av funktionen . Argumentet resursgrupp i funktionen resourceID() är valfritt om templateSpec finns i samma resursgrupp som den aktuella distributionen. Du kan också direkt skicka in resurs-ID som en parameter. Använd för att hämta ID:t:

$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id

Syntaxen för att skicka parametrar till mallspecifikationen är:

"parameters": {
  "storageAccountType": {
    "value": "[parameters('storageAccountType')]"
  }
}

Kommentar

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

Distribuera mallen

När du distribuerar den länkade mallen distribueras både webbprogrammet och lagringskontot. Distributionen är densamma som när du distribuerar andra ARM-mallar.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

New-AzResourceGroupDeployment `
  -ResourceGroupName webRG `
  -TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
  -tsResourceGroup templateSpecRg `
  -tsName storageSpec `
  -tsVersion 1.0

Nästa steg

Mer information om hur du skapar en mallspecifikation som innehåller länkade mallar finns i Skapa en mallspecifikation för en länkad mall.