Übung: Erstellen und Bereitstellen eines Bereitstellungsstapels mit Bicep

Abgeschlossen

Nun sind Sie bei Sprint 1 für die neue Depotanwendung angelangt. Sie möchten den Prozess der Erstellung eines Bereitstellungsstapels mit verwalteten Ressourcen in einem Entwicklungsabonnement testen. In dieser Übung erstellen Sie einen Bereitstellungsstapel für eine Ressourcengruppe, der auf eine Bicep-Datei verweist. Die Datei definiert einen Azure App Service-Plan und eine Azure App Service-Instanz.

In dem Prozess gehen Sie wie folgt vor:

  • Erstellen einer Bicep-Datei, die Ihre anfängliche Architektur definiert
  • Erstellen Sie mithilfe Ihrer Bicep-Datei einen Bereitstellungsstapel, der einer Ressourcengruppe zugeordnet ist.
  • Überprüfen der Konfiguration des Bereitstellungsstapels und der verwalteten Ressourcen

In dieser Übung wird die Bicep-Erweiterung für Visual Studio Code verwendet. Sie müssen diese Erweiterung in Visual Studio Code installieren.

Erstellen der Bicep-Datei

Im ersten Schritt erstellen Sie eine Bicep-Datei, die die Ressourcen definiert, die mit dem Bereitstellungsstapel verwendet werden sollen.

  1. Öffnen Sie Visual Studio Code.

  2. Erstellen Sie eine neue Datei namens main.bicep.

  3. Speichern Sie die leere Datei, damit Visual Studio Code die Bicep-Tools lädt.

    Sie können entweder Datei>Speichern unter oder STRG+S unter Windows (⌘+S unter macOS) auswählen. Merken Sie sich unbedingt den Speicherort der Datei. Sie könnten beispielsweise einen Ordner templates erstellen, in dem die Datei gespeichert werden soll.

  4. Fügen Sie den folgenden Bicep-Code in die Datei ein. Sie werden die Vorlage in Kürze bereitstellen. Es empfiehlt sich, den Code selbst einzugeben, anstatt ihn zu kopieren und einzufügen, damit Sie sehen können, wie die Tools Ihnen beim Schreiben Ihrer Bicep-Dateien helfen.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @description('The name of the web application.')
    param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'
    
    // Variables
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
      }
    }
    

    Beachten Sie, dass Sie Ausdrücke verwenden, die Zeichenfolgeninterpolation und die uniqueString()-Funktion enthalten, um Standardparameterwerte zu definieren. Wenn eine Person diese Vorlage bereitstellt, kann sie die Standardparameterwerte überschreiben, indem sie die Werte zur Bereitstellungszeit angibt. Die Variablenwerte kann sie aber nicht außer Kraft setzen.

    Beachten Sie außerdem, dass Sie für den Azure App Service-Plannamen eine Variable verwenden, für die anderen Namen aber Parameter. Für Speicherkonten und App Service-Apps sind global eindeutige Namen erforderlich, während die Namen von App Service-Plänen nur innerhalb der jeweiligen Ressourcengruppe eindeutig sein müssen. Aufgrund dieses Unterschieds ist es nicht problematisch, den gleichen Namen für den App Service-Plan für mehrere Bereitstellungen zu verwenden, solange alle Bereitstellungen in verschiedenen Ressourcengruppen erfolgen.

  5. Speichern Sie die Änderungen in der Datei.

Erstellen des Bereitstellungsstapels und Bereitstellen der Ressourcen in Azure

Sie müssen sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto anmelden, um diese Vorlage in Azure bereitzustellen. Stellen Sie sicher, dass Sie die Azure CLI-Tools installiert haben.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

  2. Wenn das Terminalfenster auf der rechten Seite Bash anzeigt, bedeutet dies, dass die richtige Shell bereits geöffnet ist. Wenn stattdessen auf der rechten Seite ein Bash-Shellsymbol angezeigt wird, können Sie es auswählen, um die Shell zu starten.

    Screenshot des Visual Studio Code-Terminalfensters mit Option „bash“

    Wenn eine andere Shell als bash angezeigt wird, wählen Sie die Shell-Dropdownliste und dann Git Bash aus.

    Screenshot des Visual Studio Code-Terminalfensters mit dem Dropdownmenü für die Terminalshell und Auswahl von „Git Bash (Standard)“

  3. Wechseln Sie im Terminal zu dem Verzeichnis, in dem Sie Ihre Vorlage gespeichert haben. Wenn Sie Ihre Vorlage beispielsweise im Ordner templates gespeichert haben, können Sie den folgenden Befehl verwenden:

    cd templates
    

Installieren von Bicep

Vergewissern Sie sich mit dem folgenden Befehl, dass Sie die aktuelle Version von Bicep verwenden:

az bicep install && az bicep upgrade

Anmelden bei Azure mithilfe der Azure CLI

  1. Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:

    az login
    
  2. Melden Sie sich im Browserfenster, das daraufhin geöffnet wird, in Ihrem Azure-Konto an.

    Im Visual Studio Code-Terminal wird eine Liste der Abonnements angezeigt, die diesem Konto zugeordnet sind.

  3. Suchen Sie in der Liste nach dem Abonnement, das Sie für diese Übung verwenden möchten.

    Wenn Sie die Liste bei der Anmeldung verpasst haben, können Sie den folgenden Codeausschnitt verwenden, um Ihre Abonnements erneut aufzulisten.

    az account list --output table
    
  4. Legen Sie das Standardabonnement für alle Azure CLI-Befehle fest, die Sie in dieser Sitzung ausführen.

    az account set --subscription "Your Subscription Name or ID"
    

Erstellen einer Ressourcengruppe

Sie müssen eine Ressourcengruppe für Ihren Bereitstellungsstapel und die verwalteten Ressourcen erstellen. Führen Sie zum Erstellen einer Ressourcengruppe den folgenden Befehl über das Terminal in Visual Studio Code aus.

az group create \
    --name rg-depositsApplication \
    --location eastus

Melden Sie sich über das Visual Studio Code-Terminal bei Ihrem Azure-Konto an, um diese Vorlage in Azure bereitzustellen. Stellen Sie sicher, dass Azure PowerShell installiert ist.

  1. Wählen Sie im Menü Terminal die Option New Terminal (Neues Terminal) aus. Das Terminalfenster wird in der Regel in der unteren Hälfte des Bildschirms geöffnet.

  2. Wenn das Terminalfenster auf der rechten Seite pwsh oder powershell anzeigt, bedeutet dies, dass die richtige Shell bereits geöffnet ist. Wenn stattdessen auf der rechten Seite ein PowerShell-Shellsymbol angezeigt wird, können Sie es auswählen, um die Shell zu starten.

    Screenshot des Terminalfensters von Visual Studio Code mit der Option „pwsh“ in der Shell-Dropdown-Liste.

    Wenn eine andere Shell als pwsh oder powershell angezeigt wird, öffnen Sie die Shelldropdownliste, und wählen Sie dann PowerShell aus.

    Screenshot des Terminalfensters von Visual Studio Code mit der Dropdown-Liste der Terminal-Shell und der Auswahl von PowerShell.

  3. Wechseln Sie im Terminal zu dem Verzeichnis, in dem Sie Ihre Vorlage gespeichert haben. Wenn Sie Ihre Vorlage beispielsweise im Ordner templates gespeichert haben, können Sie den folgenden Befehl verwenden:

    Set-Location -Path templates
    

Installieren der Bicep CLI

Installieren Sie die Bicep-CLI, um Bicep über Azure PowerShell zu verwenden.

Anmelden bei Azure mithilfe von Azure PowerShell

  1. Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:

    Connect-AzAccount
    
  2. Melden Sie sich im Browser, der anschließend geöffnet wird, bei Ihrem Azure-Konto an.

  3. Führen Sie den folgenden Befehl aus, um die ID des Abonnements abzurufen, das Sie für diese Übung verwenden möchten:

    Get-AzSubscription
    

    Die Abonnement-ID befindet sich in der zweiten Spalte. Kopieren Sie die zweite Spalte. Es sieht ungefähr wie aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e aus.

  4. Legen Sie das Standardabonnement für alle Azure PowerShell-Befehle fest, die Sie in dieser Sitzung ausführen.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Erstellen einer Ressourcengruppe

Sie müssen eine Ressourcengruppe für Ihren Bereitstellungsstapel und die verwalteten Ressourcen erstellen. Führen Sie zum Erstellen einer Ressourcengruppe den folgenden Befehl über das Terminal in Visual Studio Code aus.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

Erstellen des Bereitstellungsstapels

Als Nächstes müssen Sie den Bereitstellungsstapel für die zuvor erstellte Ressourcengruppe erstellen. Führen Sie zum Erstellen des Bereitstellungsstapels den folgenden Befehl über das Terminal in Visual Studio Code aus.

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Überprüfen der Erstellung des Bereitstellungsstapels und der verwalteten Ressourcen

Wenn Sie einen Bereitstellungsstapel und die zugehörigen verwalteten Ressourcen erstellen, können Sie die Konfiguration mithilfe der Befehlszeile oder des Azure-Portals anzeigen. In dieser Übung verwenden Sie die Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI). Um die Konfiguration des Bereitstellungsstapels anzuzeigen, führen Sie den folgenden Befehl über das Terminal in Visual Studio Code aus.

az stack group show \
    --resource-group rg-depositsApplication \
    --name stack-deposits

Die Ergebnisse umfassen die Eigenschaften des Bereitstellungsstapels und den Status der verwalteten Ressourcen. Die JSON-Ausgabe sollte in etwa wie folgt aussehen:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "bypassStackOutOfSyncError": null,
  "correlationId": ".",
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT2M53.2734284S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
  "location": null,
  "name": "stack-deposits",
  "outputs": null,
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-01-01T00:00:01.000000+00:00",
    "createdBy": "depositsapplication@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
    "lastModifiedBy": "depositsapplication@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Beachten Sie den Ressourcenabschnitt der Ausgabe. Für jede Ressource werden der Status „managed“, die Ressourcengruppe, die Ressourcen-ID und die Verweigerungseinstellungen angezeigt.

Wenn Sie einen Bereitstellungsstapel und die zugehörigen verwalteten Ressourcen erstellen, können Sie die Konfiguration mithilfe der Befehlszeile oder des Azure-Portals anzeigen. In dieser Übung verwenden Sie Azure PowerShell. Um die Konfiguration des Bereitstellungsstapels anzuzeigen, führen Sie den folgenden Befehl über das Terminal in Visual Studio Code aus.

Get-AzResourceGroupDeploymentStack `
    -ResourceGroupName rg-depositsApplication `
    -Name stack-deposits

Die Ergebnisse umfassen die Eigenschaften des Bereitstellungsstapels und den Status der verwalteten Ressourcen. Die PowerShell-Ausgabe sollte in etwa wie folgt aussehen:

Id                            : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name                          : stack-deposits
ProvisioningState             : succeeded
resourcesCleanupAction        : detach
resourceGroupsCleanupAction   : detach
managementGroupsCleanupAction : detach
CorrelationId                 : .
DenySettingsMode              : none
CreationTime(UTC)             : 1/01/2024 0:00:01 AM
DeploymentId                  : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources                     : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
                                /subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq

Beachten Sie den Ressourcenabschnitt der Ausgabe. Hier werden die vom Bereitstellungsstapel verwalteten Ressourcen definiert. Es wird die vollständige Ressourcen-ID jeder Ressource angezeigt.