Övning – Lägga till resurser i en distributionsstack
Du är på sprint 3 för det nya inlåningsprogrammet. Nyligen begärde inlåningsteamet ändringar i några av de Azure-tjänster som används. De begärde också att andra tjänster skulle skapas som stöd för programmet.
I den här övningen skapar du en distributionsstack som är begränsad till en resursgrupp som refererar till en Bicep-fil. Filen definierar en App Service-plan, en apptjänst och en Azure SQL-databas. Sedan ändrar du SKU:n för App Service-planen och uppdaterar distributionsstacken. Slutligen lägger du till en befintlig Log Analytics-arbetsyta och en ny Application Insights-instans som stöd för övervakning av programmet.
Under processen gör du följande:
- Skapa en Bicep-fil som definierar din ursprungliga arkitektur
- Skapa en distributionsstack som är begränsad till en resursgrupp med hjälp av din Bicep-fil.
- Ändra egenskaperna för en befintlig hanterad resurs
- Uppdatera Bicep-filen så att den innehåller en befintlig Log Analytics-arbetsyta och en ny Application Insights-instans
- Uppdatera distributionsstacken för att distribuera de hanterade resurserna
- Verifiera distributionsstackens hanterade resurser.
Den här övningen använder Bicep-tillägget för Visual Studio Code. Installera tillägget i Visual Studio Code.
Skapa Bicep-filen
Vårt första steg är att skapa en Bicep-fil som definierar våra resurser som ska användas med distributionsstacken.
Öppna Visual Studio Code.
Skapa en ny fil med namnet main.bicep.
Spara den tomma filen så att Visual Studio Code läser in Bicep-verktyget.
Du kan antingen välja Spara som-fil> eller välja Ctrl+S i Windows (⌘+S på macOS). Kom ihåg var du sparade filen. Du kanske till exempel vill skapa en mallmapp där filen ska sparas.
Lägg till följande Bicep-kod i filen. Du distribuerar mallen snart.
// 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' } }Observera att du använder uttryck som innehåller stränginterpolation och
uniqueString()funktionen för att definiera standardparametervärden. Någon som distribuerar den här mallen kan åsidosätta standardparametervärdena genom att ange värdena vid distributionstillfället, men de kan inte åsidosätta variabelvärdena.Observera också att du använder en variabel för App Service-plannamnet, men du använder parametrar för de andra namnen. Lagringskonton och App Service-appar behöver globalt unika namn, men App Service-plannamn behöver bara vara unika i resursgruppen. Den här skillnaden innebär att det inte är ett problem att använda samma App Service-plannamn för olika distributioner, så länge distributionerna alla går in i olika resursgrupper.
Spara ändringarna i filen.
Skapa distributionsstacken och distribuera dina resurser till Azure
För att distribuera mallen till Azure behöver du logga in på ditt Azure-konto från Visual Studio Code-terminalen. Se till att du har installerat Azure CLI-verktygen.
I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.
Om terminalfönstret visar bash på höger sida innebär det att rätt gränssnitt redan är öppet. Om du ser en bash shell-ikon till höger kan du välja den för att starta gränssnittet.
Om ett annat gränssnitt än bash visas väljer du listrutepilen för gränssnittet och väljer sedan Git Bash.
I terminalen går du till katalogen där du sparade mallen. Om du till exempel har sparat mallen i mallmappen kan du använda det här kommandot:
cd templates
Installera Bicep
Kör följande kommando för att se till att du har den senaste versionen av Bicep:
az bicep install && az bicep upgrade
Logga in på Azure med hjälp av Azure CLI
Logga in på Azure i Visual Studio Code-terminalen genom att köra följande kommando:
az loginLogga in på ditt Azure-konto i webbläsaren som öppnas.
Visual Studio Code-terminalen visar en lista över de prenumerationer som är associerade med det här kontot.
Leta upp den prenumeration som du vill använda för den här övningen i listan.
Om du missade listan från inloggningen kan du använda följande kodfragment för att lista dina prenumerationer igen.
az account list --output tableAnge standardprenumerationen för alla Azure CLI-kommandon som du kör i den här sessionen.
az account set --subscription "Your Subscription Name or ID"
Skapa en resursgrupp
Vi måste skapa en resursgrupp för vår distributionsstack och hanterade resurser. Om du vill skapa en resursgrupp kör du följande kommando från terminalen i Visual Studio Code.
az group create \
--name rg-depositsApplication \
--location eastus
Om du vill distribuera den här mallen till Azure loggar du in på ditt Azure-konto från Visual Studio Code-terminalen. Kontrollera att du har installerat Azure PowerShell.
I menyn Terminal väljer du Ny terminal. Terminalfönstret öppnas vanligtvis på den nedre halvan av skärmen.
Om terminalfönstret visar pwsh eller powershell till höger betyder det att rätt gränssnitt redan är öppet. Om du ser en PowerShell-gränssnittsikon till höger kan du också välja den för att starta gränssnittet.
Om ett annat gränssnitt än pwsh eller powershell visas väljer du listrutepilen shell och väljer sedan PowerShell.
I terminalen går du till katalogen där du sparade mallen. Om du till exempel har sparat mallen i mallmappen kan du använda det här kommandot:
Set-Location -Path templates
Installera Bicep CLI
Om du vill använda Bicep från Azure PowerShell installerar du Bicep CLI.
Logga in i Azure med Azure PowerShell
Logga in på Azure i Visual Studio Code-terminalen genom att köra följande kommando:
Connect-AzAccountLogga in på ditt Azure-konto i webbläsaren som öppnas.
Hämta ID:t för den prenumeration som du vill använda för den här övningen genom att köra följande kommando:
Get-AzSubscriptionPrenumerations-ID är den andra kolumnen. Kopiera den andra kolumnen. Det ser ut ungefär som aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e.
Ange standardprenumerationen för alla Azure PowerShell-kommandon som du kör i den här sessionen.
Set-AzContext -SubscriptionId {Your subscription ID}
Skapa en resursgrupp
Vi måste skapa en resursgrupp för vår distributionsstack och hanterade resurser. Om du vill skapa en resursgrupp kör du följande kommando från terminalen i Visual Studio Code.
New-AzResourceGroup `
-Name rg-depositsApplication `
-Location eastus
Skapa distributionsstacken
Därefter måste vi skapa vår distributionsstack som är begränsad till vår nyligen skapade resursgrupp. Skapa distributionsstacken genom att köra följande kommando från terminalen i Visual Studio Code.
Skapa distributionsstacken genom att köra följande kommando från terminalen i Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode noneDu uppmanas att ange ett värde för
sqlServerAdminUserName. Skapa ett namn för SQL Server-administratören följt av "Retur".
Du uppmanas att ange ett värde för
sqlServerAdminPassword. Skapa ett komplext lösenord för SQL Server-administratören följt av "Retur".
Vänta tills uppdateringsåtgärden har slutförts innan du går vidare till nästa uppgift.
Skapa distributionsstacken genom att köra följande kommando från terminalen i Visual Studio Code.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode NoneDu uppmanas att ange ett värde för
sqlServerAdminUserName. Skapa ett namn för SQL Server-administratören följt av "Retur".
Du uppmanas att ange ett värde för
sqlServerAdminPassword. Skapa ett komplext lösenord för SQL Server-administratören följt av "Retur".
Vänta tills uppdateringsåtgärden har slutförts innan du går vidare till nästa uppgift.
Ändra Bicep-filen för att lägga till den befintliga Log Analytics-arbetsytan och en ny Application Insights-instans
Öppna filen main.bicep i Visual Studio Code.
Lägg till den markerade koden i avsnittet variabler i filen:
// 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'Lägg till följande kod längst ned i filen:
// 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 } }Spara ändringarna i filen.
Ändra Bicep-filen för att ändra App Service-planen och App Service
Öppna filen main.bicep i Visual Studio Code.
Ändra SKU-namnet på App Service-planen från
F1tillS1:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }Lägg till den markerade koden som ska kopplas i Application Insights-instansen:
// 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 } ] } } }Spara ändringarna i filen.
Uppdatera distributionsstacken
När Bicep-filen har ändrats vill vi uppdatera distributionsstacken så att de ändringar som görs i resurserna i Bicep-filen implementeras.
Om du vill uppdatera distributionsstacken kör du följande kommando från terminalen i Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode noneDu får ett meddelande om att stacken redan finns i den aktuella prenumerationen. Om värdet för åtgärden för ohanterad parameter har ändrats varnar varningen dig om de nya värdena. Tryck på
y, följt av "Retur".
Du uppmanas att ange ett värde för
sqlServerAdminUserName. Skapa ett namn för SQL Server-administratören följt av "Retur".
Du uppmanas att ange ett värde för
sqlServerAdminPassword. Skapa ett komplext lösenord för SQL Server-administratören följt av "Retur".
Vänta tills uppdateringsåtgärden har slutförts innan du går vidare till nästa uppgift.
När Bicep-filen har ändrats vill vi uppdatera distributionsstacken så att de ändringar som görs i App Service-planen implementeras.
Om du vill uppdatera distributionsstacken kör du följande kommando från terminalen i Visual Studio Code.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode noneDu uppmanas att ange ett värde för
sqlServerAdminUserName. Skapa ett namn för SQL Server-administratören följt av "Retur".
Du uppmanas att ange ett värde för
sqlServerAdminPassword. Skapa ett komplext lösenord för SQL Server-administratören följt av "Retur".
Vänta tills uppdateringsåtgärden har slutförts innan du går vidare till nästa uppgift.
Verifiera uppdateringen av distributionsstacken och de hanterade resurserna
När uppdateringen är klar vill vi verifiera att apptjänstplanens sku uppdateras och att distributionsstacken hanterar den befintliga Log Analytics-arbetsytan och den nya Application Insights-instansen.
Om du vill visa konfigurationen av App Service-planen kör du följande kommando från terminalen i Visual Studio Code.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplicationLägg märke till sku-avsnittet i utdata. App Service-planen finns nu på S1-SKU:n. Den bör likna följande utdata:
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },Om du vill visa konfigurationen av distributionsstacken kör du följande kommando från terminalen i Visual Studio Code.
az stack group show \ --resource-group rg-depositsApplication \ --name stack-depositsObservera resursavsnittet i utdata. Nu visas den befintliga Log Analytics-arbetsytan och den nya Application Insights-instansen som hanterade resurser. Resultatet bör se ut ungefär så här:
"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" } ],
Om du vill visa konfigurationen av App Service-planen kör du följande kommando från terminalen i Visual Studio Code.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $skuObservera utdata. App Service-planen finns nu på S1-SKU:n. Den bör likna följande:
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1Om du vill visa konfigurationen av distributionsstacken kör du följande kommando från terminalen i Visual Studio Code.
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-depositsObservera resursavsnittet i utdata. Nu visas den befintliga Log Analytics-arbetsytan och den nya Application Insights-instansen som hanterade resurser. Resultatet bör se ut ungefär så här:
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