Übung: Erstellen und Bereitstellen eines Bereitstellungsstapels mit Bicep
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.
Öffnen Sie Visual Studio Code.
Erstellen Sie eine neue Datei namens main.bicep.
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.
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.
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.
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.
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.
Wenn eine andere Shell als bash angezeigt wird, wählen Sie die Shell-Dropdownliste und dann Git Bash aus.
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
Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:
az login
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.
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
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.
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.
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.
Wenn eine andere Shell als pwsh oder powershell angezeigt wird, öffnen Sie die Shelldropdownliste, und wählen Sie dann PowerShell aus.
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
Melden Sie sich im Visual Studio Code-Terminal mit dem folgenden Befehl bei Azure an:
Connect-AzAccount
Melden Sie sich im Browser, der anschließend geöffnet wird, bei Ihrem Azure-Konto an.
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.
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.