Oefening: resources toevoegen aan een implementatiestack
U staat op sprint 3 voor de nieuwe stortingsaanvraag. Onlangs heeft het stortingsteam wijzigingen aangevraagd in enkele van de Azure-services die worden gebruikt. Ze hebben ook gevraagd om andere services te maken die nodig zijn om de toepassing te ondersteunen.
In deze oefening maakt u een implementatiestack die is gericht op een resourcegroep die verwijst naar een Bicep-bestand. Het bestand definieert een App Service-plan, een app-service en een Azure SQL-database. Vervolgens wijzigt u de SKU van het App Service-plan en werkt u de implementatiestack bij. Ten slotte voegt u een bestaande Log Analytics-werkruimte en een nieuw Application Insights-exemplaar toe ter ondersteuning van de bewaking van de toepassing.
Tijdens het proces gaat u het volgende doen:
- Een Bicep-bestand maken dat uw initiële architectuur definieert
- Maak een implementatiestack die is afgestemd op een resourcegroep met behulp van uw Bicep-bestand.
- De eigenschappen van een bestaande beheerde resource wijzigen
- Het Bicep-bestand bijwerken om een bestaande Log Analytics-werkruimte en een nieuw Application Insights-exemplaar op te nemen
- De implementatiestack bijwerken om de beheerde resources te implementeren
- Valideer de beheerde resources van de implementatiestack.
In deze oefening wordt de Bicep-extensie voor Visual Studio Code gebruikt. Zorg ervoor dat u deze extensie installeert in Visual Studio Code.
Het Bicep-bestand maken
De eerste stap is het maken van een Bicep-bestand dat onze resources definieert die moeten worden gebruikt met de implementatiestack.
Open Visual Studio Code.
Maak een nieuw bestand met de naam main.bicep.
Sla het lege bestand op zodat Visual Studio Code de Bicep-hulpprogramma's laadt.
U kunt Bestand>opslaan als selecteren of Ctrl+S selecteren in Windows (⌘+S in macOS). Vergeet niet waar u het bestand hebt opgeslagen. U kunt bijvoorbeeld een sjabloonmap maken waarin u het bestand wilt opslaan.
Voeg de volgende Bicep-code toe aan het bestand. U implementeert de sjabloon binnenkort.
// 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' } }
U gebruikt expressies met tekenreeksinterpolatie en de
uniqueString()
functie om standaardparameterwaarden te definiëren. Iemand die deze sjabloon implementeert, kan de standaardparameterwaarden overschrijven door de waarden op te geven tijdens de implementatie, maar ze kunnen de variabelewaarden niet overschrijven.U ziet ook dat u een variabele gebruikt voor de naam van het App Service-plan, maar u gebruikt parameters voor de andere namen. Opslagaccounts en App Service-apps hebben wereldwijd unieke namen nodig, maar namen van App Service-plannen moeten alleen uniek zijn binnen hun resourcegroep. Dit verschil betekent dat het geen probleem is om dezelfde Naam van het App Service-plan te gebruiken voor verschillende implementaties, zolang de implementaties allemaal naar verschillende resourcegroepen gaan.
Sla de wijzigingen in het bestand op.
De implementatiestack maken en uw resources implementeren in Azure
Als u deze sjabloon wilt implementeren in Azure, moet u zich aanmelden bij uw Azure-account vanuit de Visual Studio Code-terminal. Zorg ervoor dat u de Azure CLI-hulpprogramma's hebt geïnstalleerd.
Selecteer Nieuwe terminal in het menu Terminal. Het terminalvenster wordt meestal geopend in de onderste helft van het scherm.
Als de shell aan de rechterkant van het terminalvenster bash is, is de juiste shell geopend en kunt u doorgaan naar de volgende sectie.
Als een andere shell dan bash wordt weergegeven, selecteert u de vervolgkeuzepijl van de shell en selecteert u Vervolgens Azure Cloud Shell (Bash).
Selecteer bash in de lijst met terminalshells.
Ga in de terminal naar de map waarin u de sjabloon hebt opgeslagen. Als u de sjabloon bijvoorbeeld hebt opgeslagen in de map sjablonen , kunt u deze opdracht gebruiken:
cd templates
Bicep installeren
Voer de volgende opdracht uit om te controleren of u de nieuwste versie van Bicep hebt:
az bicep install && az bicep upgrade
Aanmelden bij Azure met behulp van Azure CLI
Meld u in de Visual Studio Code-terminal aan bij Azure door de volgende opdracht uit te voeren:
az login
Meld u aan bij uw Azure-account in de browser die wordt geopend.
In de Visual Studio Code-terminal wordt een lijst weergegeven met de abonnementen die aan dit account zijn gekoppeld.
Zoek in de lijst het abonnement dat u voor deze oefening wilt gebruiken.
Als u de lijst uit de aanmelding hebt gemist, kunt u het volgende fragment gebruiken om uw abonnementen opnieuw weer te geven.
az account list --output table
Stel het standaardabonnement in voor alle Azure CLI-opdrachten die u in deze sessie uitvoert.
az account set --subscription "Your Subscription Name or ID"
Een brongroep maken
We moeten een resourcegroep maken voor onze implementatiestack en beheerde resources. Als u een resourcegroep wilt maken, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
az group create \
--name rg-depositsApplication \
--location eastus
Als u deze sjabloon wilt implementeren in Azure, meldt u zich aan bij uw Azure-account vanuit de Visual Studio Code-terminal. Zorg ervoor dat u Azure PowerShell hebt geïnstalleerd.
Selecteer Nieuwe terminal in het menu Terminal. Het terminalvenster wordt meestal geopend in de onderste helft van het scherm.
Als de shell aan de rechterkant van het terminalvenster powershell of pwsh is, is de juiste shell geopend en kunt u doorgaan naar de volgende sectie.
Als een andere shell dan powershell of pwsh wordt weergegeven, selecteert u de vervolgkeuzepijl van de shell en selecteert u Vervolgens PowerShell.
Selecteer powershell of pwsh in de lijst met terminalshells.
Ga in de terminal naar de map waarin u de sjabloon hebt opgeslagen. Als u uw sjabloon bijvoorbeeld hebt opgeslagen in de map sjablonen , kunt u deze opdracht gebruiken:
Set-Location -Path templates
Bicep CLI installeren
Als u Bicep wilt gebruiken vanuit Azure PowerShell, installeert u de Bicep CLI.
Aanmelden bij Azure met behulp van Azure PowerShell
Meld u in de Visual Studio Code-terminal aan bij Azure door de volgende opdracht uit te voeren:
Connect-AzAccount
Meld u aan bij uw Azure-account in de browser die wordt geopend.
Haal de id op van het abonnement dat u voor deze oefening wilt gebruiken door de volgende opdracht uit te voeren:
Get-AzSubscription
De abonnements-id is de tweede kolom. Kopieer de tweede kolom. Het ziet er ongeveer uit als aaaa0a0a-bb1b-cc2c-dd3d-eeeee4e4e4e4e.
Stel het standaardabonnement in voor alle Azure PowerShell-opdrachten die u in deze sessie uitvoert.
Set-AzContext -SubscriptionId {Your subscription ID}
Een brongroep maken
We moeten een resourcegroep maken voor onze implementatiestack en beheerde resources. Als u een resourcegroep wilt maken, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
New-AzResourceGroup `
-Name rg-depositsApplication `
-Location eastus
De implementatiestack maken
Vervolgens moeten we onze implementatiestack maken die is afgestemd op onze onlangs gemaakte resourcegroep. Als u de implementatiestack wilt maken, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
Als u de implementatiestack wilt maken, voert u de volgende opdracht uit vanuit de terminal in 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 none
U wordt gevraagd een waarde in te voeren voor
sqlServerAdminUserName
. Maak een naam voor de SQL-serverbeheerder, gevolgd door Enter.U wordt gevraagd een waarde in te voeren voor
sqlServerAdminPassword
. Maak een complex wachtwoord voor de SQL-serverbeheerder, gevolgd door Enter.Wacht tot de updatebewerking is voltooid voordat u verdergaat met de volgende taak.
Als u de implementatiestack wilt maken, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode None
U wordt gevraagd een waarde in te voeren voor
sqlServerAdminUserName
. Maak een naam voor de SQL-serverbeheerder, gevolgd door Enter.U wordt gevraagd een waarde in te voeren voor
sqlServerAdminPassword
. Maak een complex wachtwoord voor de SQL-serverbeheerder, gevolgd door Enter.Wacht tot de updatebewerking is voltooid voordat u verdergaat met de volgende taak.
Het Bicep-bestand wijzigen om de bestaande Log Analytics-werkruimte en een nieuw Application Insights-exemplaar toe te voegen
Open het bestand main.bicep in Visual Studio Code.
Voeg de gemarkeerde code toe aan de sectie variabelen van uw bestand:
// 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'
Voeg de volgende code toe aan de onderkant van het bestand:
// 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 } }
Sla de wijzigingen in het bestand op.
Het Bicep-bestand wijzigen om het App Service-plan en de App Service te wijzigen
Open het bestand main.bicep in Visual Studio Code.
Wijzig de SKU-naam van het App Service-plan
F1
S1
in:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
Voeg de gemarkeerde code toe om te verbinden in het Application Insights-exemplaar:
// 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 } ] } } }
Sla de wijzigingen in het bestand op.
De implementatiestack bijwerken
Nu het Bicep-bestand is gewijzigd, willen we de implementatiestack bijwerken, zodat de wijzigingen in de resources in het Bicep-bestand worden geïmplementeerd.
Als u de implementatiestack wilt bijwerken, voert u de volgende opdracht uit vanuit de terminal in 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 none
U ontvangt een bericht waarin staat dat de stack al bestaat in het huidige abonnement. Als de waarde van de actie voor onbeheerde parameter is gewijzigd, wordt u gewaarschuwd voor de nieuwe waarden. Druk op
y
, gevolgd door Enter.U wordt gevraagd een waarde in te voeren voor
sqlServerAdminUserName
. Maak een naam voor de SQL-serverbeheerder, gevolgd door Enter.U wordt gevraagd een waarde in te voeren voor
sqlServerAdminPassword
. Maak een complex wachtwoord voor de SQL-serverbeheerder, gevolgd door Enter.Wacht tot de updatebewerking is voltooid voordat u verdergaat met de volgende taak.
Nu het Bicep-bestand is gewijzigd, willen we de implementatiestack bijwerken, zodat de wijzigingen in het App Service-plan worden geïmplementeerd.
Als u de implementatiestack wilt bijwerken, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
U wordt gevraagd een waarde in te voeren voor
sqlServerAdminUserName
. Maak een naam voor de SQL-serverbeheerder, gevolgd door Enter.U wordt gevraagd een waarde in te voeren voor
sqlServerAdminPassword
. Maak een complex wachtwoord voor de SQL-serverbeheerder, gevolgd door Enter.Wacht tot de updatebewerking is voltooid voordat u verdergaat met de volgende taak.
Controleer de update naar de implementatiestack en de beheerde resources
Nu de update is voltooid, willen we controleren of de sKU van het App Service-plan is bijgewerkt en dat de implementatiestack de bestaande Log Analytics-werkruimte en het nieuwe Application Insights-exemplaar beheert.
Als u de configuratie van het App Service-plan wilt weergeven, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplication
Let op de sKU-sectie van de uitvoer. Het App Service-plan bevindt zich nu in de S1-SKU. Deze moet vergelijkbaar zijn met de volgende uitvoer:
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },
Als u de configuratie van de implementatiestack wilt weergeven, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
Let op de sectie resources van de uitvoer. We zien nu de bestaande Log Analytics-werkruimte en het nieuwe Application Insights-exemplaar dat wordt vermeld als beheerde resources. Het resultaat moet er ongeveer uitzien als in de volgende uitvoer:
"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" } ],
Als u de configuratie van het App Service-plan wilt weergeven, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $sku
Let op de uitvoer. Het App Service-plan bevindt zich nu in de S1-SKU. Dit moet er ongeveer als volgt uitzien:
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1
Als u de configuratie van de implementatiestack wilt weergeven, voert u de volgende opdracht uit vanuit de terminal in Visual Studio Code.
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
Let op de sectie resources van de uitvoer. We zien nu de bestaande Log Analytics-werkruimte en het nieuwe Application Insights-exemplaar dat wordt vermeld als beheerde resources. Het resultaat moet er ongeveer uitzien als in de volgende uitvoer:
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