Упражнение. Развертывание нескольких ресурсов с помощью циклов
На данный момент шаблон Bicep развернул один логический сервер Azure SQL с параметрами аудита для вашей рабочей среды. Теперь необходимо развернуть несколько логических серверов, по одному для каждого региона, в котором компания начинает выпускать новую интеллектуальную плюшевую игрушку.
В этом упражнении вы расширите созданный ранее код Bicep, чтобы развернуть экземпляры баз данных в нескольких регионах Azure.
В процессе вы:
- Переместите существующий код Bicep в модуль.
- Создайте новый файл Bicep с циклом копирования, чтобы развернуть ресурсы модуля несколько раз.
- Разверните файл Bicep и проверьте развертывание ресурсов.
- Измените параметр, чтобы добавить дополнительное расположение, повторно разверните файл и убедитесь, что были развернуты новые ресурсы.
Перемещение ресурсов в модуль
В Visual Studio Code создайте новую папку с именем модули в той же папке, где вы создали файл main.bicep.
Переместите файл main.bicep в только что созданную папку modules.
Переименуйте файл main.bicep на database.bicep.
Развертывание нескольких экземпляров с помощью цикла копирования
Создайте новый файл main.bicep, чтобы заменить только что перемещенный и переименованный.
Откройте новый файл main.bicep и добавьте следующие параметры:
@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 } }]
Обратите внимание, что объявление модуля циклически перебирает все значения в параметре массива
locations
.Сохраните изменения в файле.
Проверка файла Bicep
После выполнения всех описанных выше изменений файл main.bicep должен выглядеть, как в следующем примере:
@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
}
}]
Файл database.bicep должен выглядеть, как в следующем примере:
@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 : ''
}
}
Если это не так, скопируйте пример или настройте шаблон в соответствии с примером.
Разверните шаблон Bicep в Azure
В окне терминала Visual Studio Code разверните шаблон Bicep в Azure, выполнив указанный ниже код.
az deployment group create --template-file main.bicep
В терминале Visual Studio Code разверните шаблон Bicep в Azure, выполнив следующую команду Azure PowerShell:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Внимание
Не забудьте использовать тот же пароль для входа и пароля, который вы использовали ранее, или развертывание не завершится успешно.
Дождитесь окончания развертывания.
Проверка развертывания
После завершения развертывания необходимо убедиться, что развернут новый логический сервер и база данных, и что они находятся в правильных регионах Azure.
Перейдите на портал Azure и убедитесь, что вы находитесь в подписке песочницы.
Выберите "
[имя группы ресурсов песочницы] "Убедитесь, что новый логический сервер и база данных расположены в регионе "Восточная часть США 2", который был указан в значении параметра
locations
по умолчанию.Оставьте эту страницу открытой в браузере. Позже развертывания потребуется проверить снова.
Обновление и повторное развертывание шаблона в Azure с дополнительным расположением для логического сервера
Команда, отвечающая за выпуск плюшевых игрушек, теперь запускает производство в Азии. Команда запрашивает развертывание нового сервера и базы данных в регионе "Восточная Азия". Для этого необходимо обновить параметр Bicep и повторно развернуть шаблон.
Верните в Visual Studio Code. В верхней части файла main.bicep добавьте новое значение в массив
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Сохраните изменения в файле.
В окне терминала Visual Studio Code повторно разверните файл, выполнив следующий код:
az deployment group create --template-file main.bicep
Верните в Visual Studio Code. В верхней части файла main.bicep добавьте новое значение в массив
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westus' 'eastus2' 'eastasia' ]
Сохраните изменения в файле.
В окне терминала Visual Studio Code повторно разверните файл, выполнив следующий код:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Внимание
Не забудьте использовать тот же пароль для входа и пароля, который вы использовали ранее, или развертывание не завершится успешно.
Дождитесь окончания развертывания.
Проверка повторного развертывания
Теперь, когда вы повторно развернули ресурсы, необходимо убедиться, что дополнительный логический сервер и ресурсы базы данных были созданы в регионе "Восточная Азия".
Вернитесь на портал Azure и выберите группу ресурсов
[имя группы ресурсов песочницы] . При необходимости выберите Обновить, чтобы просмотреть недавно развернутые ресурсы.Убедитесь, что новый логический сервер и база данных развернуты в регионе "Восточная Азия".