Distribuera en mallspecifikation

Slutförd

När du har skapat och publicerat mallspecifikationen kan du distribuera den. I den här lektionen får du lära dig mer om hur du distribuerar en mallspecifikation.

Skapa en distribution med hjälp av en mallspecifikation

Om du vill distribuera en mallspecifikation till en resursgrupp använder du samma New-AzResourceGroupDeployment cmdlet som du är bekant med. I stället för att ange en mallfil anger du en mallspecifikations resurs-ID, som du ser i det här exemplet:

New-AzResourceGroupDeployment `
  -TemplateSpecId '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'

Även om mallspecifikationer måste skapas i en resursgrupp kan du distribuera dem till prenumerationer, hanteringsgrupper eller till och med klientorganisationer med hjälp av dessa cmdletar:

Så här distribuerar du i det här omfånget: Använd den här PowerShell-cmdleten:
Resursgrupp New-AzResourceGroupDeployment
Prenumeration New-AzSubscriptionDeployment
Hanteringsgrupp New-AzManagementGroupDeployment
Klientorganisation New-AzTenantDeployment

Var och en av dessa cmdletar accepterar parametern -TemplateSpecId för att initiera en mallspecifikationsdistribution i något av dessa omfång.

Om du vill distribuera en mallspecifikation till en resursgrupp använder du samma az deployment group create kommando som du är bekant med. I stället för att ange en mallfil anger du en mallspecifikations resurs-ID, som du ser i det här exemplet:

az deployment group create \
  --template-spec "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS"

Även om mallspecifikationer måste skapas i en resursgrupp kan du distribuera dem till prenumerationer, hanteringsgrupper eller till och med klientorganisationer med hjälp av följande kommandon:

Så här distribuerar du i det här omfånget: Kör det här Azure CLI-kommandot:
Resursgrupp az deployment group create
Prenumeration az deployment sub create
Hanteringsgrupp az deployment mg create
Klientorganisation az deployment tenant create

Vart och ett av dessa kommandon accepterar --template-spec argumentet för att initiera en mallspecifikationsdistribution i något av dessa omfång.

Använda en mallspecifikation som en länkad distribution

Om du vill använda en mallspecifikation inifrån en annan Azure Resource Manager-mall (ARM-mall) skapar du en distribution som använder mallspecifikationen. Den här typen av distribution kallas för en länkad distribution eftersom du länkar till en distributionsmall som anges externt.

I Azure är en distribution en resurs som har resurstypen Microsoft.Resources/deployments. När du distribuerar en ARM-mall skapar du en distributionsresurs. Samma begrepp gäller när du distribuerar en mallspecifikation, så här:

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "createStorage",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
    }
  }
}

När du har parametrar att ange för distributionen av mallspecifikationen parameters använder du egenskapen:

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "createStorage",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
    },
    "parameters": {
      "storageAccountName": {
        "value": "[parameters('storageAccountName')]"
      }
    }
  }
}

Använda en mallspecifikation som en Bicep-modul

Du kan använda en mallspecifikation som en modul i en Bicep-fil:

module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
  name: 'storageAccountTemplateSpec'
}

Observera att modulsökvägen använder ett särskilt format:

Diagram showing the components of the template spec path.

Det finns tre komponenter i modulsökvägen, avgränsade med kolontecknet (:):

  • Schema: Bicep stöder flera typer av moduler, som kallas scheman. När du använder en mallspecifikation som en modul använder ts du som schema.
  • Prenumerations-ID, resursgruppsnamn och mallspecifikationsnamn: Dessa värden bör ange platsen för mallspecifikationsresursen som du tidigare publicerade. Du använder snedstreck (/) för att separera prenumerations-ID, resursgruppsnamn och mallspecifikationsnamn. Det här avsnittet av modulsökvägen är inte det fullständiga resurs-ID:t för mallspecifikationen – det är bara några av komponenterna i resurs-ID:t.
  • Version: Mallspecifikationsversionen måste inkluderas.

Kommentar

Du kan inte använda variabler, parametrar eller stränginterpolation när du anger sökvägen till en modul. Den fullständiga mallspecifikationssökvägen måste sparas i Bicep-filen.

När du har parametrar som ska anges i mallspecifikationen params använder du egenskapen:

module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
  name: 'storageAccountTemplateSpec'
  params: {
    storageAccountName: storageAccountName
  }
}

Mallspecifikationsfilen laddas ned och kopieras (överförs) till din JSON ARM-mall när Bicep-filen skapas. Normalt sker den här åtgärden när du distribuerar Bicep-filen, men du kan också använda Bicep-verktyget för att transpilera explicit genom att köra bicep build kommandot .