Exercício - Implantar vários recursos usando loops

Concluído

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

  1. No Visual Studio Code, crie uma nova pasta chamada modules na mesma pasta onde você criou o arquivo main.bicep .

  2. Mova seu arquivo main.bicep para a pasta modules que você acabou de criar.

  3. Renomeie o arquivo main.bicep para database.bicep.

Implantar várias instâncias usando um loop de cópia

  1. Crie um novo arquivo main.bicep para substituir aquele que você acabou de mover e renomear.

  2. 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
    
  3. 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.

  4. 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.

  1. Aceda ao portal do Azure e certifique-se de que está na subscrição sandbox.

  2. Selecione [nome do grupo de recursos do sandbox].

  3. 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.

    Screenshot of the Azure portal, showing the deployment of the logical servers and databases in various locations.

  4. 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.

  1. 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'
    ]
    
  2. Guarde as alterações ao ficheiro.

  3. No terminal do Visual Studio Code, reimplante o arquivo executando o seguinte código:

    az deployment group create --template-file main.bicep
    
  1. 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'
    ]
    
  2. Guarde as alterações ao ficheiro.

  3. 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.

  1. 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.

  2. Verifique se o novo servidor lógico e o novo banco de dados foram implantados na região Ásia Oriental.

    Screenshot of the Azure portal, showing the deployment of a logical server and database in an additional region.