Bereitstellen einer Vorlagenspezifikation

Abgeschlossen

Nachdem Sie ihre Vorlagenspezifikation erstellt und veröffentlicht haben, können Sie sie bereitstellen. In dieser Lektion erfahren Sie mehr über die Verfahren zum Bereitstellen einer Vorlagenspezifikation.

Erstellen einer Bereitstellung mithilfe einer Vorlagenspezifikation

Zum Bereitstellen einer Vorlagenspezifikation in einer Ressourcengruppe verwenden Sie das gleiche, Ihnen bekannte New-AzResourceGroupDeployment-Cmdlet. Anstatt eine Vorlagendatei anzugeben, geben Sie die Ressourcen-ID einer Vorlagenspezifikation an, wie in diesem Beispiel gezeigt:

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

Zwar müssen Vorlagenspezifikationen innerhalb einer Ressourcengruppe erstellt werden, Sie können sie aber mithilfe dieser Cmdlets für Abonnements, Verwaltungsgruppen oder sogar Mandanten bereitstellen:

So stellen Sie in diesem Bereich bereit: Verwenden Sie dieses PowerShell-Cmdlet:
Resource group New-AzResourceGroupDeployment
Subscription New-AzSubscriptionDeployment
Verwaltungsgruppe New-AzManagementGroupDeployment
Tenant New-AzTenantDeployment

Jedes dieser Cmdlets akzeptiert den -TemplateSpecId-Parameter, um eine Vorlagenspezifikationsbereitstellung in einem dieser Bereiche zu einzuleiten.

Zum Bereitstellen einer Vorlagenspezifikation in einer Ressourcengruppe verwenden Sie den gleichen, Ihnen bekannten az deployment group create-Befehl. Anstatt eine Vorlagendatei anzugeben, geben Sie die Ressourcen-ID einer Vorlagenspezifikation an, wie in diesem Beispiel gezeigt:

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

Zwar müssen Vorlagenspezifikationen innerhalb einer Ressourcengruppe erstellt werden, Sie können sie aber mithilfe dieser Befehle für Abonnements, Verwaltungsgruppen oder sogar Mandanten bereitstellen:

So stellen Sie in diesem Bereich bereit: Führen Sie dann den folgenden Azure CLI-Befehl aus:
Resource group az deployment group create
Subscription az deployment sub create
Verwaltungsgruppe az deployment mg create
Tenant az deployment tenant create

Jeder dieser Befehle akzeptiert das --template-spec-Argument, um eine Vorlagenspezifikationsbereitstellung in einem dieser Bereiche zu einzuleiten.

Verwenden einer Vorlagenspezifikation als verknüpfte Bereitstellung

Um eine Vorlagenspezifikation aus einer anderen Azure Resource Manager-Vorlage (ARM-Vorlage) zu verwenden, erstellen Sie eine Bereitstellung, die diese Vorlagenspezifikation verwendet. Dieser Bereitstellungstyp wird als verknüpfte Bereitstellung bezeichnet, da Sie eine Verknüpfung mit einer extern angegebenen Bereitstellungsvorlage herstellen.

In Azure ist eine Bereitstellung eine Ressource mit dem Ressourcentyp Microsoft.Resources/deployments. Wenn Sie eine ARM-Vorlage bereitstellen, erstellen Sie eine Bereitstellungsressource. Das gleiche Konzept gilt, wenn Sie eine Vorlagenspezifikation wie diese bereitstellen:

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

Wenn für die Bereitstellung der Vorlagenspezifikation Parameter angegeben werden müssen, verwenden Sie die parameters-Eigenschaft:

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

Verwenden einer Vorlagenspezifikation als Bicep-Modul

Sie können eine Vorlagenspezifikation als Modul in einer Bicep-Datei verwenden:

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

Beachten Sie, dass der Modulpfad ein spezielles Format verwendet:

Diagram showing the components of the template spec path.

Der Modulpfad setzt sich aus drei Komponenten zusammen, die jeweils durch einen Doppelpunkt (:) getrennt sind:

  • Schema: Bicep unterstützt mehrere Modultypen. Diese werden als Schemas bezeichnet. Wenn Sie eine Vorlagenspezifikation als Modul verwenden möchten, verwenden Sie ts als Schema.
  • Abonnement-ID, Ressourcengruppenname und Vorlagenspezifikationsname: Diese Werte sollten den Speicherort der zuvor veröffentlichten Vorlagenspezifikationsressource angeben. Abonnement-ID, Ressourcengruppenname und Vorlagenspezifikationsname werden jeweils durch einen Schrägstrich (/) getrennt. Dieser Abschnitt des Modulpfads ist nicht die vollständige Ressourcen-ID der Vorlagenspezifikation – es sind nur einige der Komponenten der Ressourcen-ID.
  • Version: Die Version der Vorlagenspezifikation muss eingeschlossen werden.

Hinweis

Sie können keine Variablen, Parameter oder Zeichenfolgeninterpolation verwenden, wenn Sie den Pfad zu einem Modul angeben. Der vollständige Vorlagenspezifikationspfad muss in Ihrer Bicep-Datei gespeichert werden.

Wenn Sie für die Vorlagenspezifikation Parameter angeben müssen, verwenden Sie die Eigenschaft params:

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

Die Vorlagenspezifikationsdatei wird heruntergeladen und in Ihre JSON-ARM-Vorlage kopiert (transpiliert), wenn die Bicep-Datei erstellt wird. Normalerweise geschieht dieser Vorgang, wenn Sie Ihre Bicep-Datei bereitstellen, aber Sie können auch die Bicep-Tools verwenden, um explizit zu transpilieren, indem Sie den Befehl bicep build ausführen.