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 Möglichkeiten zum Bereitstellen einer Vorlagenspezifikation.

Erstellen einer Bereitstellung mithilfe einer Vorlagenspezifikation

Um eine Vorlagenspezifikation für eine Ressourcengruppe bereitzustellen, verwenden Sie dasselbe New-AzResourceGroupDeployment Cmdlet, mit dem Sie vertraut sind. 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'

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

So stellen Sie in diesem Bereich bereit: Verwenden Sie dieses PowerShell-Cmdlet:
Ressourcengruppe New-AzResourceGroupDeployment
Abonnement New-AzSubscriptionDeployment
Verwaltungsgruppe New-AzManagementGroupDeployment
Mieter New-AzTenantDeployment

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

Um eine Vorlagenspezifikation für eine Ressourcengruppe bereitzustellen, verwenden Sie denselben az deployment group create Befehl, mit dem Sie vertraut sind. 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"

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

So stellen Sie in diesem Bereich bereit: Führen Sie diesen Azure CLI-Befehl aus:
Ressourcengruppe az deployment group create
Abonnement az deployment sub create
Verwaltungsgruppe az deployment mg create
Mieter az deployment tenant create

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

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, die den Ressourcentyp Microsoft.Resources/deploymentsaufweist. Wenn Sie eine ARM-Vorlage bereitstellen, erstellen Sie eine Bereitstellungsressource. Das gleiche Konzept gilt, wenn Sie eine Vorlagenspezifikation wie folgt 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 Sie Parameter für die Bereitstellung der Vorlagenspezifikation angeben 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:

Diagramm mit den Komponenten des Vorlagenspezifikationspfads.

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

  • Schema: Bicep unterstützt verschiedene Modultypen, die als Schemas bezeichnet werden. Wenn Sie eine Vorlagenspezifikation als Modul verwenden, nutzen Sie ts als Schema.
  • Abonnement-ID, Ressourcengruppenname und Vorlagenspezifikationsname: Diese Werte sollten den Speicherort der zuvor veröffentlichten Vorlagenspezifikationsressource angeben. Sie verwenden Schrägstriche (/) zum Trennen der Abonnement-ID, des Ressourcengruppennamens und des Vorlagenspezifikationsnamens. Dieser Abschnitt des Modulpfads ist nicht die vollständige Ressourcen-ID der Vorlagenspezifikation – es sind nur einige der Komponenten der Ressourcen-ID.
  • Version: Die Vorlagenspezifikationsversion muss einbezogen werden.

Hinweis

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

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

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 erfolgt dieser Vorgang, wenn Sie Ihre Bicep-Datei bereitstellen, aber Sie können auch die Bicep-Tools verwenden, um explizit zu transpilieren, indem Sie den bicep build Befehl ausführen.