Упражнение. Добавление параметров и декораторов
Примечание.
Когда вы в первый раз активируете песочницу и принимаете условия, ваша учетная запись Майкрософт связывается с новым каталогом Azure с именем Microsoft Learn Sandbox. Вы также добавлены к специальной подписке под названием Concierge Subscription.
Предположим, вы создаете шаблон Bicep для развертывания ресурсов Azure в рамках миграции приложения отдела кадров. В этом упражнении вы создадите план службы приложений Azure и приложение Службы приложений. Вы также примените декораторы к каждому параметру, чтобы гарантировать, что они всегда будут содержать нужные значения.
Во время процесса вы выполните следующие задачи:
- Создайте файл Bicep, содержащий параметры и переменные.
- Добавьте декораторы в параметры.
- Протестируйте развертывание, чтобы убедиться, что шаблон действителен.
В этом упражнении используется расширение Bicep для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.
Создание шаблона Bicep с параметрами
Откройте Visual Studio Code.
Создайте файл с именем main.bicep.
Сохраните пустой файл, куда Visual Studio Code загрузит средства Bicep.
Можно выбрать Файл>Сохранить как или нажать клавиши CTRL+S в Windows (⌘+S в macOS). Обязательно запомните, где сохранен файл. Например, можно создать для него папку scripts.
Добавьте в файл следующий содержимое. Скоро вы развернете шаблон. Введите содержимое вручную, а не используйте функцию копирования и вставки. Так вы сможете увидеть, насколько полезны инструменты при написании файлов Bicep.
param environmentName string = 'dev' param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}' param appServicePlanInstanceCount int = 1 param appServicePlanSku object = { name: 'F1' tier: 'Free' } param location string = 'eastus' var appServicePlanName = '${environmentName}-${solutionName}-plan' var appServiceAppName = '${environmentName}-${solutionName}-app'
Здесь вы создаете несколько параметров, которые используют сочетание типов. Кроме того, вам нужно определить значения по умолчанию для каждого параметра. К значениям по умолчанию можно отнести интерполяцию строк и функцию
uniqueString()
.Совет
Функция
uniqueString()
полезна при создании глобально уникальных имен ресурсов. Она возвращает строку, которая будет одинаковой при каждом развертывании в одной и той же группе ресурсов и разной при развертывании в разных группах ресурсов или подписках.Вам также нужно определить переменные, которые создают имена плана службы приложений Azure и приложения Службы приложений. К их значениям относятся некоторые из указанных вами параметров. Пользователь, выполняющий развертывание, может переопределить значения параметров, при этом значения переменных переопределить нельзя.
Совет
Вы указываете, что параметру
location
должно быть присвоено значениеwestus3
. Обычно ресурсы создаются в том же расположении, что и группа ресурсов, с помощью свойстваresourceGroup().location
. Но при работе с песочницей Microsoft Learn необходимо использовать определенные регионы Azure, которые не совпадают с расположением группы ресурсов.В файле main.bicep в Visual Studio Code добавьте следующий код в конец файла:
resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSku.name tier: appServicePlanSku.tier capacity: appServicePlanInstanceCount } } resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Обратите внимание, что ресурсы используют значения заданных вами параметров.
Сохраните изменения в файле.
Добавление описаний параметров
В файле main.bicep в Visual Studio Code добавьте декоратор
@description
непосредственно над каждым параметром, который вы создали в предыдущей задаче. Параметры должны выглядеть примерно как в следующем примере:@description('The name of the environment. This must be dev, test, or prod.') param environmentName string = 'dev' @description('The unique name of the solution. This is used to ensure that resource names are unique.') param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}' @description('The number of App Service plan instances.') param appServicePlanInstanceCount int = 1 @description('The name and tier of the App Service plan SKU.') param appServicePlanSku object = { name: 'F1' tier: 'Free' } @description('The Azure region into which the resources should be deployed.') param location string = 'eastus'
Сохраните изменения в файле.
Ограничение входных значений
Ваша компания будет развертывать приложение отдела кадров в трех средах: dev
, test
и prod
. Этот параметр ограничивается environmentName
только этими тремя значениями.
В файле main.bicep в Visual Studio Code найдите параметр
environmentName
. Вставьте декоратор@allowed
под декоратором@description
. В результате параметр должен выглядеть так:@description('The name of the environment. This must be dev, test, or prod.') @allowed([ 'dev' 'test' 'prod' ]) param environmentName string = 'dev'
Обратите внимание, что вы ограничиваете параметр
environmentName
значениямиdev
,test
иprod
. Если в будущем будут добавлены другие среды, потребуется обновить этот список.Сохраните изменения в файле.
Ограничение длины входных данных
Параметр solutionName
используется для создания имен ресурсов. Необходимо задать минимальную длину в 5 символов и максимальную длину в 30 символов.
В файле main.bicep в Visual Studio Code найдите параметр
solutionName
. Добавьте декораторы@minLength
и@maxLength
под декоратором@description
. В результате параметр должен выглядеть так:@description('The unique name of the solution. This is used to ensure that resource names are unique.') @minLength(5) @maxLength(30) param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
Сохраните изменения в файле.
Ограничение числовых значений
Теперь нужно обеспечить, чтобы параметр appServicePlanInstanceCount
допускал только значения от 1 до 10.
В файле main.bicep в Visual Studio Code найдите параметр
appServicePlanInstanceCount
. Добавьте декораторы@minValue
и@maxValue
под декоратором@description
. В результате параметр должен выглядеть так:@description('The number of App Service plan instances.') @minValue(1) @maxValue(10) param appServicePlanInstanceCount int = 1
Сохраните изменения в файле.
Проверка файла Bicep
После выполнения всех описанных выше изменений файл Bicep должен выглядеть, как в следующем примере:
@description('The name of the environment. This must be dev, test, or prod.')
@allowed([
'dev'
'test'
'prod'
])
param environmentName string = 'dev'
@description('The unique name of the solution. This is used to ensure that resource names are unique.')
@minLength(5)
@maxLength(30)
param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
@description('The number of App Service plan instances.')
@minValue(1)
@maxValue(10)
param appServicePlanInstanceCount int = 1
@description('The name and tier of the App Service plan SKU.')
param appServicePlanSku object = {
name: 'F1'
tier: 'Free'
}
@description('The Azure region into which the resources should be deployed.')
param location string = 'eastus'
var appServicePlanName = '${environmentName}-${solutionName}-plan'
var appServiceAppName = '${environmentName}-${solutionName}-app'
resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSku.name
tier: appServicePlanSku.tier
capacity: appServicePlanInstanceCount
}
}
resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Если это не так, скопируйте пример или настройте шаблон в соответствии с примером.
Разверните шаблон Bicep в Azure
Чтобы развернуть этот шаблон в Azure, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code. У вас также должен быть установлен интерфейс Azure CLI, и необходимо войти под той же учетной записью, с которой вы активировали песочницу.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает bash справа , это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки Bash справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от bash , выберите стрелку раскрывающегося списка оболочки и выберите Git Bash.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
cd templates
Установка Bicep
Выполните следующую команду, чтобы убедиться, что у вас установлена последняя версия Bicep:
az bicep install && az bicep upgrade
Вход в Azure
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
az login
В открывшемся браузере войдите в свою учетную запись Azure. Терминал Visual Studio Code отобразит список подписок, связанных с данной учетной записью. Выберите подписку с именем "Подписка Concierge".
Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.
Получите идентификаторы подписок Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Задайте подписку по умолчанию, используя идентификатор подписки. Замените строку {your subscription ID} на идентификатор последней подписки Concierge.
az account set --subscription {your subscription ID}
Установка группы ресурсов по умолчанию
При использовании Azure CLI можно установить группу ресурсов по умолчанию и опустить параметр в остальных командах Azure CLI в этом упражнении. Установите по умолчанию группу ресурсов, созданную для вас в среде песочницы.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Развертывание шаблона в Azure с помощью Azure CLI
Запустите следующий код из терминала в Visual Studio Code, чтобы развернуть шаблон Bicep в Azure. Не нужно указывать значения параметров, так как они имеют значения по умолчанию. Этот процесс может занять пару минут. Затем вы увидите, что развертывание выполнено.
az deployment group create --name main --template-file main.bicep
В окне терминала появится Running...
.
Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что вы установили Azure PowerShell, и войдите в ту же учетную запись, которая активировала песочницу.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает pwsh или powershell справа, это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки PowerShell справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от pwsh или PowerShell , выберите стрелку раскрывающегося списка оболочки и выберите PowerShell.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
Set-Location -Path templates
Установите Bicep CLI
Чтобы использовать Bicep из Azure PowerShell, установите Bicep CLI.
Вход в Azure с помощью Azure PowerShell
В окне терминала Visual Studio Code выполните следующую команду:
Connect-AzAccount
Откроется браузер, в котором вы можете выполнить вход в учетную запись Azure. Браузер может быть открыт в фоновом режиме.
После входа в Azure в окне терминала появится список подписок, связанных с этой учетной записью. Если вы активировали песочницу, отобразится подписка с именем Подписка Concierge. Выберите его для остальной части упражнения.
Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.
Получите идентификатор подписки. Следующая команда выдаст список ваших подписок с идентификаторами. Найдите
Concierge Subscription
, а затем скопируйте идентификатор из второго столбца. Оно будет выглядеть примерно так —aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Измените активную подписку на подписку Concierge. Обязательно замените заполнитель {Your subscription ID} (Ваш идентификатор подписки) идентификатором, который вы скопировали.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Установка группы ресурсов по умолчанию
Вы можете установить группу ресурсов по умолчанию и опустить параметр в остальных командах Azure PowerShell в этом упражнении. Установите по умолчанию группу ресурсов, созданную для вас в окружении песочницы.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Развертывание шаблона в Azure с помощью PowerShell
Разверните шаблон в Azure, выполнив следующие команды Azure PowerShell в терминале. Не нужно указывать значения параметров, так как они имеют значения по умолчанию. Этот процесс может занять пару минут. Затем вы увидите, что развертывание выполнено.
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
Проверка развертывания
Перейдите на портал Azure и убедитесь, что вы находитесь в подписке песочницы:
- Выберите свой аватар в правом верхнем углу страницы.
- Выберите Переключить каталог. В списке выберите каталог Песочница Microsoft Learn.
На левой панели выберите Группы ресурсов.
Выберите "
[имя группы ресурсов песочницы] "В разделе Обзор вы можете увидеть, что одно развертывание выполнено успешно.
Щелкните ссылку 1 Succeeded (1 успешное), чтобы просмотреть сведения об этом развертывании.
Нажмите развертывание с именем main, чтобы увидеть, какие ресурсы развернуты, а затем выберите Сведения о развертывании, чтобы развернуть и просмотреть раздел. В этом случае отобразятся план службы приложений и приложение.
В меню слева выберите Входные данные.
Обратите внимание, что указаны параметры и их значения.
Оставьте эту страницу открытой в браузере. Позже развертывания потребуется проверить снова.