Übung: Hinzufügen von Ressourcen zu einem Bereitstellungsstapel
Nun sind Sie bei Sprint 3 für die neue Depotanwendung angelangt. Kürzlich hat die Depotabteilung Änderungen an einigen der verwendeten Azure-Dienste angefordert. Zudem wurde um die Erstellung weiterer Dienste gebeten, die für die Unterstützung der Anwendung erforderlich sind.
In dieser Übung erstellen Sie einen Bereitstellungsstapel für eine Ressourcengruppe, der auf eine Bicep-Datei verweist. Die Datei definiert einen App Service-Plan, eine App Service-Instanz und eine Azure SQL-Datenbank. Anschließend ändern Sie die SKU des App Service-Plans und updaten den Bereitstellungsstapel. Schließlich fügen Sie einen vorhandenen Log Analytics-Arbeitsbereich und eine neue Application Insights-Instanz hinzu, um die Überwachung der Anwendung zu unterstützen.
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.
- Ändern der Eigenschaften einer vorhandenen verwalteten Ressource
- Updaten der Bicep-Datei, um einen vorhandenen Log Analytics-Arbeitsbereich und eine neue Application Insights-Instanz einzuschließen
- Updaten des Bereitstellungsstapels zur Bereitstellung der verwalteten Ressourcen
- Überprüfen der verwalteten Ressourcen des Bereitstellungsstapels
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.
// Parameters @description('The location for all resources.') param location string = 'eastus' @description('The name of the SQL database.') param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}' @description('The password of the admin user.') param sqlServerAdminUserName string @description('The name of the admin user.') @secure() param sqlServerAdminPassword string @description('The name of the SQL server.') param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}' @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 } } // Resource - SQL Server resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={ name: sqlServerName location: location properties: { administratorLogin: sqlServerAdminUserName administratorLoginPassword: sqlServerAdminPassword } } // Resource - SQL Database resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = { parent: sqlServer name: sqlDatabaseName location: location sku: { name: 'Standard' tier: 'Standard' } }
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 Namen des App Service-Plans 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 die auf der rechten Seite des Terminalfensters angezeigte Shell bash ist, ist die richtige Shell geöffnet, und Sie können mit dem nächsten Abschnitt fortfahren.
Wenn eine andere Shell als bash angezeigt wird, wählen Sie die Shell-Dropdownliste und dann Azure Cloud Shell (Bash) aus.
Wählen Sie in der Liste der Terminalshells 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 die auf der rechten Seite des Terminalfensters angezeigte Shell powershell oder pwsh ist, ist die richtige Shell geöffnet, und Sie können mit dem nächsten Abschnitt fortfahren.
Wenn eine andere Shell als powershell oder pwsh angezeigt wird, wählen Sie die Shell-Dropdownliste und dann PowerShell aus.
Wählen Sie in der Liste der Terminalshells powershell oder pwsh 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.
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
Sie werden aufgefordert, einen Wert für
sqlServerAdminUserName
einzugeben. Erstellen Sie einen Namen für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Sie werden aufgefordert, einen Wert für
sqlServerAdminPassword
einzugeben. Erstellen Sie ein komplexes Kennwort für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Warten Sie, bis der Aktualisierungsvorgang abgeschlossen ist, bevor Sie mit der nächsten Aufgabe fortfahren.
Führen Sie zum Erstellen des Bereitstellungsstapels den folgenden Befehl über das Terminal in Visual Studio Code aus.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode None
Sie werden aufgefordert, einen Wert für
sqlServerAdminUserName
einzugeben. Erstellen Sie einen Namen für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Sie werden aufgefordert, einen Wert für
sqlServerAdminPassword
einzugeben. Erstellen Sie ein komplexes Kennwort für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Warten Sie, bis der Aktualisierungsvorgang abgeschlossen ist, bevor Sie mit der nächsten Aufgabe fortfahren.
Ändern der Bicep-Datei zum Hinzufügen des vorhandenen Log Analytics-Arbeitsbereichs und einer neuen Application Insights-Instanz
Öffnen Sie die Datei main.bicep in Visual Studio Code.
Fügen Sie dem Variablenabschnitt der Datei den hervorgehobenen Code hinzu:
// Variables @description('The name of the Application Insights instance.') var applicationInsightsName = 'appinsights-deposits' @description('The name of the app service plan.') var appServicePlanName = 'plan-deposits' @description('The name of the Log Analytics Workspace.') var logAnalyticsWorkspaceName = 'log-deposits'
Fügen Sie unten in der Datei den folgenden Code hinzu:
// Resource - Log Analytics Workspace resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = { name: logAnalyticsWorkspaceName location: location properties: { retentionInDays: 30 sku: { name: 'PerGB2018' } } } // Resource - Application Insights resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { name: applicationInsightsName location: location kind: 'web' properties: { Application_Type: 'web' WorkspaceResourceId: logAnalyticsWorkspace.id } }
Speichern Sie die Änderungen in der Datei.
Ändern der Bicep-Datei zum Ändern des App Service-Plans und der App Service-Instanz
Öffnen Sie die Datei main.bicep in Visual Studio Code.
Ändern Sie den SKU-Namen des App Service-Plans von
F1
inS1
:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
Fügen Sie den hervorgehobenen Code hinzu, um ihn in die Application Insights-Instanz einzubinden:
// Resource - Web App resource webApplication 'Microsoft.Web/sites@2023-12-01' = { name: webApplicationName location: location properties: { serverFarmId: appServicePlan.id siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsights.properties.InstrumentationKey } ] } } }
Speichern Sie die Änderungen in der Datei.
Aktualisieren des Bereitstellungsstapels
Mit der geänderten Bicep-Datei können Sie den Bereitstellungsstapel updaten, damit die an den Ressourcen in der Bicep-Datei vorgenommenen Änderungen implementiert werden.
Führen Sie zum Aktualisieren 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
Sie erhalten eine Meldung, die besagt, dass der Stapel bereits im aktuellen Abonnement vorhanden ist. Wenn sich der Wert des Parameters Aktion für Nichtverwalten verändert hat, werden Sie durch die Warnung über die neuen Werte benachrichtigt. Drücken Sie zunächst
y
und dann die EINGABETASTE.Sie werden aufgefordert, einen Wert für
sqlServerAdminUserName
einzugeben. Erstellen Sie einen Namen für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Sie werden aufgefordert, einen Wert für
sqlServerAdminPassword
einzugeben. Erstellen Sie ein komplexes Kennwort für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Warten Sie, bis der Aktualisierungsvorgang abgeschlossen ist, bevor Sie mit der nächsten Aufgabe fortfahren.
Mit der geänderten Bicep-Datei können Sie den Bereitstellungsstapel aktualisieren, damit die am App Service-Plan vorgenommenen Änderungen implementiert werden.
Führen Sie zum Aktualisieren des Bereitstellungsstapels den folgenden Befehl über das Terminal in Visual Studio Code aus.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
Sie werden aufgefordert, einen Wert für
sqlServerAdminUserName
einzugeben. Erstellen Sie einen Namen für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Sie werden aufgefordert, einen Wert für
sqlServerAdminPassword
einzugeben. Erstellen Sie ein komplexes Kennwort für den SQL Server-Administrator, und drücken Sie die EINGABETASTE.Warten Sie, bis der Aktualisierungsvorgang abgeschlossen ist, bevor Sie mit der nächsten Aufgabe fortfahren.
Überprüfen der Aktualisierung des Bereitstellungsstapels und der verwalteten Ressourcen
Nach Abschluss des Updates sollten Sie überprüfen, ob die SKU des App Service-Plans upgedatet wird und der Bereitstellungsstapel den vorhandenen Log Analytics-Arbeitsbereich und die neue Application Insights-Instanz verwaltet.
Um die Konfiguration des App Service-Plans anzuzeigen, führen Sie den folgenden Befehl über das Terminal in Visual Studio Code aus.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplication
Beachten Sie den SKU-Abschnitt der Ausgabe. Der App Service-Plan befindet sich jetzt in der SKU „S1“. Die Ausgabe sollte in etwa wie folgt aussehen:
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },
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
Beachten Sie den Ressourcenabschnitt der Ausgabe. Nun sehen Sie den vorhandenen Log Analytics-Arbeitsbereich und die neue Application Insights-Instanz, die als verwaltete Ressourcen aufgeführt sind. Das Ergebnis sollte der folgenden Ausgabe ähneln:
"resources": [ { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" } ],
Um die Konfiguration des App Service-Plans anzuzeigen, führen Sie den folgenden Befehl über das Terminal in Visual Studio Code aus.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $sku
Beachten Sie die Ausgabe. Der App Service-Plan befindet sich jetzt in der SKU „S1“. Die Ausgabe sollte in etwa wie folgt aussehen:
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1
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
Beachten Sie den Ressourcenabschnitt der Ausgabe. Nun sehen Sie den vorhandenen Log Analytics-Arbeitsbereich und die neue Application Insights-Instanz, die als verwaltete Ressourcen aufgeführt sind. Das Ergebnis sollte der folgenden Ausgabe ähneln:
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/ sql-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits