Exercício - Implantar vários recursos usando loops
Até agora, seu modelo Bicep implantou um único servidor lógico SQL do Azure, com configurações de auditoria incluídas para seu ambiente de produção. Agora você precisa implantar vários servidores lógicos, um para cada região onde sua empresa está lançando seu novo ursinho de pelúcia inteligente.
Neste exercício, você estenderá o código Bicep criado anteriormente para poder implantar instâncias de seus bancos de dados em várias regiões do Azure.
Durante o processo, você:
- Mova o código Bicep existente para um módulo.
- Crie um novo arquivo Bicep com um loop de cópia para implantar os recursos do módulo várias vezes.
- Implante o arquivo Bicep e verifique a implantação dos recursos.
- Modifique o parâmetro para adicionar um local adicional, reimplante o arquivo e verifique se os novos recursos foram implantados.
Mover recursos para um módulo
No Visual Studio Code, crie uma nova pasta chamada modules na mesma pasta onde você criou o arquivo main.bicep .
Mova seu arquivo main.bicep para a pasta modules que você acabou de criar.
Renomeie o arquivo main.bicep para database.bicep.
Implantar várias instâncias usando um loop de cópia
Crie um novo arquivo main.bicep para substituir aquele que você acabou de mover e renomear.
Abra o novo arquivo main.bicep e adicione os seguintes parâmetros:
@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' '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
Abaixo das declarações de parâmetro, adicione a seguinte declaração de módulo:
module databases 'modules/database.bicep' = [for location in locations: { name: 'database-${location}' params: { location: location sqlServerAdministratorLogin: sqlServerAdministratorLogin sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword } }]
Observe que a declaração do módulo faz um loop em todos os valores no
locations
parâmetro array.Guarde as alterações ao ficheiro.
Verifique seu arquivo Bicep
Depois de concluir todas as alterações anteriores, o arquivo main.bicep deve ser semelhante a este exemplo:
@description('The Azure regions into which the resources should be deployed.')
param locations array = [
'westeurope'
'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
}
}]
Seu arquivo database.bicep deve se parecer com este exemplo:
@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@2023-08-01-preview' = {
name: sqlServerName
location: location
properties: {
administratorLogin: sqlServerAdministratorLogin
administratorLoginPassword: sqlServerAdministratorLoginPassword
}
}
resource sqlDatabase 'Microsoft.Sql/servers/databases@2023-08-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@2023-08-01-preview' = if (auditingEnabled) {
parent: sqlServer
name: 'default'
properties: {
state: 'Enabled'
storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
storageAccountAccessKey: environmentName == 'Production' ? listKeys(auditStorageAccount.id, auditStorageAccount.apiVersion).keys[0].value : ''
}
}
Caso contrário, copie o exemplo ou ajuste o modelo para corresponder ao exemplo.
Implantar o modelo Bicep no Azure
No terminal do Visual Studio Code, implante o modelo Bicep no Azure executando o seguinte código:
az deployment group create --template-file main.bicep
No terminal do Visual Studio Code, implante o modelo Bicep no Azure executando o seguinte comando do Azure PowerShell:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Atenção
Certifique-se de usar o mesmo login e senha que você usou anteriormente, ou a implantação não será concluída com êxito.
Aguarde pela conclusão da implementação.
Verificar a implementação
Após a conclusão da implantação, você deseja verificar se o novo servidor lógico e o novo banco de dados estão implantados e se estão localizados nas regiões corretas do Azure.
Aceda ao portal do Azure e certifique-se de que está na subscrição sandbox.
Selecione
[nome do grupo de recursos do sandbox] .Verifique se o novo servidor lógico e o novo banco de dados estão localizados na região Leste dos EUA 2, que você especificou no
locations
valor padrão do parâmetro.Deixe a página aberta no seu browser. Vai verificar as implementações novamente mais tarde.
Atualizar e reimplantar o modelo no Azure com um local adicional para um servidor lógico
A equipe de brinquedos de ursinhos de pelúcia está prestes a ser lançada novamente, desta vez na Ásia. A equipe está solicitando que você implante um novo servidor e banco de dados na região do Leste Asiático. Para fazer isso, você precisa atualizar seu parâmetro Bicep e reimplantar seu modelo.
Retorne ao Visual Studio Code. Na parte superior do arquivo main.bicep , adicione um novo valor à
locations
matriz:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' 'eastus2' 'eastasia' ]
Guarde as alterações ao ficheiro.
No terminal do Visual Studio Code, reimplante o arquivo executando o seguinte código:
az deployment group create --template-file main.bicep
Retorne ao Visual Studio Code. Na parte superior do arquivo main.bicep , adicione um novo valor à
locations
matriz:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' 'eastus2' 'eastasia' ]
Guarde as alterações ao ficheiro.
No terminal do Visual Studio Code, reimplante o arquivo executando o seguinte código:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Atenção
Certifique-se de usar o mesmo login e senha que você usou anteriormente, ou a implantação não será concluída com êxito.
Aguarde pela conclusão da implementação.
Verificar a reimplantação
Agora que você reimplantou os recursos, deseja verificar se o servidor lógico adicional e os recursos de banco de dados foram criados na região do Leste Asiático.
Retorne ao portal do Azure e selecione o grupo de recursos [nome do
grupo de recursos da área restrita]. Se necessário, selecione Atualizar para ver os recursos recém-implantados.Verifique se o novo servidor lógico e o novo banco de dados foram implantados na região Ásia Oriental.