Ejercicio: Implementación de varios recursos mediante bucles
Hasta ahora, la plantilla de Bicep ha implementado un único servidor lógico de Azure SQL, donde se ha incluido la configuración de auditoría para el entorno de producción. Ahora debe implementar varios servidores lógicos, uno para cada región en la que la empresa vaya a lanzar su nuevo osito de peluche inteligente.
En este ejercicio, ampliará el código de Bicep que creó anteriormente para que pueda implementar instancias de las bases de datos en varias regiones de Azure.
Durante el proceso, hará lo siguiente:
- Mueva el código de Bicep existente a un módulo.
- Cree otro archivo de Bicep con un bucle de copia para implementar los recursos del módulo varias veces.
- Implemente el archivo de Bicep y compruebe la implementación de los recursos.
- Modifique el parámetro para agregar una ubicación adicional, vuelva a implementar el archivo y, luego, compruebe que se han implementado los nuevos recursos.
Traslado de recursos a un módulo
En Visual Studio Code, cree una carpeta llamada modules en la misma carpeta donde creó el archivo main.bicep.
Mueva el archivo main.bicep a la carpeta modules que acaba de crear.
Cambie el nombre del archivo main.bicep por database.bicep.
Implementación de varias instancias mediante un bucle de copia
Cree un archivo main.bicep para reemplazar el que acaba de mover y cambiar de nombre.
Abra el nuevo archivo main.bicep y agregue los parámetros siguientes:
@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
Debajo de las declaraciones de parámetros, agregue la siguiente declaración del módulo:
module databases 'modules/database.bicep' = [for location in locations: { name: 'database-${location}' params: { location: location sqlServerAdministratorLogin: sqlServerAdministratorLogin sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword } }]
Observe que la declaración del módulo recorre en bucle todos los valores del parámetro de la matriz
locations
.Guarde los cambios en el archivo.
Comprobación del archivo de Bicep
Una vez completados todos los cambios anteriores, el archivo main.bicep debe tener el siguiente aspecto:
@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
}
}]
El archivo database.bicep debe parecerse al ejemplo siguiente:
@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 no es así, copie el ejemplo o ajuste la plantilla para que coincida con él.
Implementación de la plantilla de Bicep en Azure
En el terminal de Visual Studio Code, implemente la plantilla de Bicep en Azure mediante el código siguiente:
az deployment group create --name main --template-file main.bicep
En el terminal de Visual Studio Code, implemente la plantilla de Bicep en Azure mediante el siguiente comando de Azure PowerShell:
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Precaución
Asegúrese de usar la misma información de inicio de sesión y contraseña que usó anteriormente o la implementación no finalizará correctamente.
Espere a que finalice la implementación.
Comprobación de la implementación
Una vez finalizada la implementación, quiere comprobar que el servidor lógico y la base de datos nuevos están implementados y que se encuentran en las regiones de Azure correctas.
Vaya a Azure Portal y asegúrese de que está en la suscripción de espacio aislado.
Seleccione
[nombre del grupo de recursos del espacio aislado] .Compruebe que el servidor lógico y la base de datos nuevos se encuentran en la región Este de EE. UU. 2, que especificó en el valor predeterminado del parámetro
locations
.Deje la página abierta en el explorador. Tendrá que volver a comprobar las implementaciones posteriormente.
Actualización y nueva implementación de la plantilla en Azure con una ubicación adicional para un servidor lógico
El equipo de ositos de peluche está a punto de lanzar de nuevo el juguete, esta vez en Asia. El equipo le pide que implemente un servidor y una base de datos nuevos en la región Este de Asia. Para ello, debe actualizar el parámetro de Bicep y volver a implementar la plantilla.
Vuelva a Visual Studio Code. En la parte superior del archivo main.bicep, agregue un nuevo valor a la matriz
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Guarde los cambios en el archivo.
En el terminal de Visual Studio Code, vuelva a implementar el archivo mediante el código siguiente:
az deployment group create --name main --template-file main.bicep
Vuelva a Visual Studio Code. En la parte superior del archivo main.bicep, agregue un nuevo valor a la matriz
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Guarde los cambios en el archivo.
En el terminal de Visual Studio Code, vuelva a implementar el archivo mediante el código siguiente:
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Precaución
Asegúrese de usar la misma información de inicio de sesión y contraseña que usó anteriormente o la implementación no finalizará correctamente.
Espere a que finalice la implementación.
Comprobación de la nueva implementación
Ahora que ha vuelto a implementar los recursos, quiere comprobar que los recursos adicionales del servidor lógico y de la base de datos se han creado en la región Este de Asia.
Vuelva a Azure Portal y seleccione el grupo de recursos
[nombre del grupo de recursos del espacio aislado] . Si es necesario, seleccione Actualizar para ver los recursos recién implementados.Compruebe que el servidor lógico y la base de datos nuevos se han implementado en la región Este de Asia.