Exercice : Déployer plusieurs ressources à l’aide de boucles
Jusqu’à présent, votre modèle Bicep a déployé un seul serveur logique Azure SQL, avec des paramètres d’audit inclus pour votre environnement de production. Vous devez maintenant déployer plusieurs serveurs logiques, un pour chaque région où votre entreprise lance son nouveau nounours intelligent.
Dans cet exercice, vous allez étendre le code Bicep que vous avez créé précédemment afin de pouvoir déployer des instances de vos bases de données dans plusieurs régions Azure.
Pendant ce processus, vous allez :
- Déplacez votre code Bicep existant dans un module.
- Créez un nouveau fichier Bicep avec une boucle de copie pour déployer les ressources du module plusieurs fois.
- Déployez le fichier Bicep et vérifiez le déploiement des ressources.
- Modifiez le paramètre pour ajouter un emplacement supplémentaire, redéployez le fichier, puis vérifiez que les nouvelles ressources ont été déployées.
Déplacer des ressources dans un module
Dans Visual Studio Code, créez un nouveau dossier appelé modules dans le même dossier que celui où vous avez créé votre fichier main.bicep.
Déplacez votre fichier main.bicep dans le dossier modules que vous venez de créer.
Renommez le fichier main.bicep en database.bicep.
Déployer plusieurs instances à l’aide d’une boucle de copie
Créez un nouveau fichier main.bicep pour remplacer celui que vous venez de déplacer et renommer.
Ouvrez le nouveau fichier main.bicep, puis ajoutez les paramètres suivants :
@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
Sous les déclarations de paramètres, ajoutez la déclaration de module suivante :
module databases 'modules/database.bicep' = [for location in locations: { name: 'database-${location}' params: { location: location sqlServerAdministratorLogin: sqlServerAdministratorLogin sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword } }]
Notez que la déclaration de module effectue une boucle sur toutes les valeurs dans le paramètre de tableau
locations
.Enregistrez les modifications du fichier.
Vérifier votre fichier Bicep
Une fois que vous avez effectué toutes les modifications précédentes, votre fichier main.bicep doit ressembler à l’exemple suivant :
@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
}
}]
Votre fichier database.bicep doit ressembler à l’exemple suivant :
@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 : ''
}
}
Si ce n’est pas le cas, copiez l’exemple ou ajustez votre modèle pour qu’il corresponde à l’exemple.
Déployer le modèle Bicep sur Azure
Dans le terminal Visual Studio Code, déployez le modèle Bicep sur Azure en exécutant le code suivant :
az deployment group create --name main --template-file main.bicep
Dans le terminal Visual Studio Code, déployez le modèle Bicep sur Azure en exécutant la commande Azure PowerShell suivante :
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Attention
Veillez à utiliser les mêmes identifiant et mot de passe que ceux que vous avez utilisés précédemment, ou le déploiement ne se terminera pas correctement.
Attendez que le déploiement se termine.
Vérifier le déploiement
Une fois le déploiement terminé, vous devez vérifier que le nouveau serveur logique et la nouvelle base de données sont déployés et qu’ils se trouvent dans les régions Azure appropriées.
Accédez au portail Azure et vérifiez que vous êtes bien dans l’abonnement de bac à sable.
Sélectionnez
[nom du groupe de ressources du bac à sable] .Vérifiez que le nouveau serveur logique et la nouvelle base de données se trouvent dans la région USA Est 2, que vous avez spécifiée dans la valeur par défaut du paramètre
locations
.Laissez la page ouverte dans votre navigateur. Vous allez à nouveau vérifier les déploiements plus tard.
Mettre à jour et redéployer le modèle sur Azure avec un emplacement supplémentaire pour un serveur logique
L’équipe de développement du nounours est sur le point de le lancer à nouveau, cette fois en Asie. L’équipe vous demande de déployer un nouveau serveur et une nouvelle base de données dans la région Asie Est. Pour ce faire, vous devez mettre à jour votre paramètre Bicep et redéployer votre modèle.
Revenez à Visual Studio Code. En haut du fichier main.bicep, ajoutez une nouvelle valeur au tableau
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Enregistrez les modifications du fichier.
Dans le terminal Visual Studio Code, redéployez le fichier en exécutant le code suivant :
az deployment group create --name main --template-file main.bicep
Revenez à Visual Studio Code. En haut du fichier main.bicep, ajoutez une nouvelle valeur au tableau
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Enregistrez les modifications du fichier.
Dans le terminal Visual Studio Code, redéployez le fichier en exécutant le code suivant :
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Attention
Veillez à utiliser les mêmes identifiant et mot de passe que ceux que vous avez utilisés précédemment, ou le déploiement ne se terminera pas correctement.
Attendez que le déploiement se termine.
Vérifier le redéploiement
Maintenant que vous avez redéployé les ressources, vous devez vérifier que les ressources de base de données et de serveur logique supplémentaires ont été créées dans la région Asie Est.
Revenez au portail Azure et sélectionnez le groupe de ressources
[nom du groupe de ressources de bac à sable] . Si nécessaire, sélectionnez Actualiser pour afficher les ressources qui viennent d’être déployées.Vérifiez que le nouveau serveur logique et la nouvelle base de données ont été déployés dans la région Asie Est.