Oefening: meerdere resources implementeren met behulp van lussen
Tot nu toe heeft uw Bicep-sjabloon één logische Azure SQL-server geïmplementeerd, met controle-instellingen voor uw productieomgeving. U moet nu meerdere logische servers implementeren, één voor elke regio waar uw bedrijf de nieuwe slimme teddybeer start.
In deze oefening gaat u de Bicep-code uitbreiden die u eerder hebt gemaakt, zodat u exemplaren van uw databases kunt implementeren in meerdere Azure-regio's.
Tijdens het proces gaat u het volgende doen:
- Verplaats uw bestaande Bicep-code naar een module.
- Maak een nieuw Bicep-bestand met een kopieerlus om de resources van de module meerdere keren te implementeren.
- Implementeer het Bicep-bestand en controleer de implementatie van de resources.
- Wijzig de parameter om een extra locatie toe te voegen, implementeer het bestand opnieuw en controleer of de nieuwe resources zijn geïmplementeerd.
Resources verplaatsen naar een module
Maak in Visual Studio Code een nieuwe map met de naam modules in dezelfde map waarin u uw main.bicep-bestand hebt gemaakt.
Verplaats uw bestand main.bicep naar de modulemap die u zojuist hebt gemaakt.
Wijzig de naam van het bestand main.bicep in database.bicep.
Meerdere exemplaren implementeren met behulp van een kopieerlus
Maak een nieuw main.bicep-bestand om het bestand te vervangen dat u zojuist hebt verplaatst en hernoemd.
Open het nieuwe bestand main.bicep en voeg de volgende parameters toe:
@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' ] @secure() @description('The administrator login username for the SQL server.') param sqlServerAdministratorLogin string @secure() @description('The administrator login password for the SQL server.') param sqlServerAdministratorLoginPassword string
Voeg onder de parameterdeclaraties de volgende moduledeclaratie toe:
module databases 'modules/database.bicep' = [for location in locations: { name: 'database-${location}' params: { location: location sqlServerAdministratorLogin: sqlServerAdministratorLogin sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword } }]
U ziet dat de moduledeclaratie alle waarden in de
locations
matrixparameter doorloopt.Sla de wijzigingen in het bestand op.
Uw Bicep-bestand controleren
Nadat u alle voorgaande wijzigingen hebt voltooid, moet het bestand main.bicep er als volgt uitzien:
@description('The Azure regions into which the resources should be deployed.')
param locations array = [
'westus'
'eastus2'
]
@secure()
@description('The administrator login username for the SQL server.')
param sqlServerAdministratorLogin string
@secure()
@description('The administrator login password for the SQL server.')
param sqlServerAdministratorLoginPassword string
module databases 'modules/database.bicep' = [for location in locations: {
name: 'database-${location}'
params: {
location: location
sqlServerAdministratorLogin: sqlServerAdministratorLogin
sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword
}
}]
Uw database.bicep-bestand moet er als volgt uitzien:
@description('The Azure region into which the resources should be deployed.')
param location string
@secure()
@description('The administrator login username for the SQL server.')
param sqlServerAdministratorLogin string
@secure()
@description('The administrator login password for the SQL server.')
param sqlServerAdministratorLoginPassword string
@description('The name and tier of the SQL database SKU.')
param sqlDatabaseSku object = {
name: 'Standard'
tier: 'Standard'
}
@description('The name of the environment. This must be Development or Production.')
@allowed([
'Development'
'Production'
])
param environmentName string = 'Development'
@description('The name of the audit storage account SKU.')
param auditStorageAccountSkuName string = 'Standard_LRS'
var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}'
var sqlDatabaseName = 'TeddyBear'
var auditingEnabled = environmentName == 'Production'
var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)
resource sqlServer 'Microsoft.Sql/servers@2024-05-01-preview' = {
name: sqlServerName
location: location
properties: {
administratorLogin: sqlServerAdministratorLogin
administratorLoginPassword: sqlServerAdministratorLoginPassword
}
}
resource sqlDatabase 'Microsoft.Sql/servers/databases@2024-05-01-preview' = {
parent: sqlServer
name: sqlDatabaseName
location: location
sku: sqlDatabaseSku
}
resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = if (auditingEnabled) {
name: auditStorageAccountName
location: location
sku: {
name: auditStorageAccountSkuName
}
kind: 'StorageV2'
}
resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2024-05-01-preview' = if (auditingEnabled) {
parent: sqlServer
name: 'default'
properties: {
state: 'Enabled'
storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
storageAccountAccessKey: environmentName == 'Production' ? auditStorageAccount.listKeys().keys[0].value : ''
}
}
Als dit niet het geval is, kopieert u het voorbeeld of past u de sjabloon aan zodat deze overeenkomt met het voorbeeld.
De Bicep-sjabloon implementeren in Azure
Implementeer in de Visual Studio Code-terminal de Bicep-sjabloon in Azure door de volgende code uit te voeren:
az deployment group create --name main --template-file main.bicep
Implementeer in de Visual Studio Code-terminal de Bicep-sjabloon in Azure door de volgende Azure PowerShell-opdracht uit te voeren:
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Let op
Zorg ervoor dat u dezelfde aanmelding en hetzelfde wachtwoord gebruikt als u eerder hebt gebruikt, anders wordt de implementatie niet voltooid.
Wacht tot de implementatie is voltooid.
De implementatie controleren
Nadat de implementatie is voltooid, wilt u controleren of de nieuwe logische server en database zijn geïmplementeerd en of deze zich in de juiste Azure-regio's bevinden.
Ga naar Azure Portal en zorg ervoor dat u zich in het sandbox-abonnement bevindt.
Selecteer
[naam sandboxresourcegroep] .Controleer of de nieuwe logische server en database zich bevinden in de regio VS - oost 2, die u hebt opgegeven in de standaardwaarde van de
locations
parameter.Laat de pagina in uw browser open. U controleert de implementaties later opnieuw.
De sjabloon bijwerken en opnieuw implementeren in Azure met een extra locatie voor een logische server
Het teddybeer speelgoedteam staat op het punt om opnieuw te lanceren, deze keer in Azië. Het team vraagt u om een nieuwe server en database te implementeren in de regio Azië - oost. Hiervoor moet u de Bicep-parameter bijwerken en de sjabloon opnieuw implementeren.
Ga terug naar Visual Studio Code. Voeg boven aan het bestand main.bicep een nieuwe waarde toe aan de
locations
matrix:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Sla de wijzigingen in het bestand op.
Implementeer het bestand opnieuw in de Visual Studio Code-terminal door de volgende code uit te voeren:
az deployment group create --name main --template-file main.bicep
Ga terug naar Visual Studio Code. Voeg boven aan het bestand main.bicep een nieuwe waarde toe aan de
locations
matrix:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Sla de wijzigingen in het bestand op.
Implementeer het bestand opnieuw in de Visual Studio Code-terminal door de volgende code uit te voeren:
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Let op
Zorg ervoor dat u dezelfde aanmelding en hetzelfde wachtwoord gebruikt als u eerder hebt gebruikt, anders wordt de implementatie niet voltooid.
Wacht tot de implementatie is voltooid.
De herployment controleren
Nu u de resources opnieuw hebt geïmplementeerd, wilt u controleren of de extra logische server- en databasebronnen zijn gemaakt in de regio Azië - oost.
Ga terug naar Azure Portal en selecteer de
resourcegroep [naam sandbox-resourcegroep]. Selecteer indien nodig Vernieuwen om de zojuist geïmplementeerde resources weer te geven.Controleer of de nieuwe logische server en database zijn geïmplementeerd in de regio Azië - oost.