Упражнение. Добавление параметров и декораторов

Завершено

Примечание.

Когда вы в первый раз активируете песочницу и принимаете условия, ваша учетная запись Майкрософт связывается с новым каталогом Azure с именем Microsoft Learn Sandbox. Вы также добавлены к специальной подписке под названием Concierge Subscription.

Предположим, вы создаете шаблон Bicep для развертывания ресурсов Azure в рамках миграции приложения отдела кадров. В этом упражнении вы создадите план службы приложений Azure и приложение Службы приложений. Вы также примените декораторы к каждому параметру, чтобы гарантировать, что они всегда будут содержать нужные значения.

Во время процесса вы выполните следующие задачи:

  • Создайте файл Bicep, содержащий параметры и переменные.
  • Добавьте декораторы в параметры.
  • Протестируйте развертывание, чтобы убедиться, что шаблон действителен.

В этом упражнении используется расширение Bicep для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.

Создание шаблона Bicep с параметрами

  1. Откройте Visual Studio Code.

  2. Создайте файл с именем main.bicep.

  3. Сохраните пустой файл, куда Visual Studio Code загрузит средства Bicep.

    Можно выбрать Файл>Сохранить как или нажать клавиши CTRL+S в Windows (⌘+S в macOS). Обязательно запомните, где сохранен файл. Например, можно создать для него папку scripts.

  4. Добавьте в файл следующий содержимое. Скоро вы развернете шаблон. Введите содержимое вручную, а не используйте функцию копирования и вставки. Так вы сможете увидеть, насколько полезны инструменты при написании файлов 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, которые не совпадают с расположением группы ресурсов.

  5. В файле 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
      }
    }
    

    Обратите внимание, что ресурсы используют значения заданных вами параметров.

  6. Сохраните изменения в файле.

Добавление описаний параметров

  1. В файле 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'
    
  2. Сохраните изменения в файле.

Ограничение входных значений

Ваша компания будет развертывать приложение отдела кадров в трех средах: dev, testи prod. Этот параметр ограничивается environmentName только этими тремя значениями.

  1. В файле 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. Если в будущем будут добавлены другие среды, потребуется обновить этот список.

  2. Сохраните изменения в файле.

Ограничение длины входных данных

Параметр solutionName используется для создания имен ресурсов. Необходимо задать минимальную длину в 5 символов и максимальную длину в 30 символов.

  1. В файле 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)}'
    
  2. Сохраните изменения в файле.

Ограничение числовых значений

Теперь нужно обеспечить, чтобы параметр appServicePlanInstanceCount допускал только значения от 1 до 10.

  1. В файле 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
    
  2. Сохраните изменения в файле.

Проверка файла 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, и необходимо войти под той же учетной записью, с которой вы активировали песочницу.

  1. В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.

  2. Если окно терминала отображает bash справа , это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки Bash справа, его можно выбрать для запуска оболочки.

    Снимок экрана: окно терминала Visual Studio Code с bash.

    Если появится оболочка, отличной от bash , выберите стрелку раскрывающегося списка оболочки и выберите Git Bash.

    Снимок экрана: окно терминала Visual Studio Code, где отображается раскрывающийся список оболочек терминала и выбран параметр

  3. Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:

    cd templates
    

Установка Bicep

Выполните следующую команду, чтобы убедиться, что у вас установлена последняя версия Bicep:

az bicep install && az bicep upgrade

Вход в Azure

  1. В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:

    az login
    
  2. В открывшемся браузере войдите в свою учетную запись Azure. Терминал Visual Studio Code отобразит список подписок, связанных с данной учетной записью. Выберите подписку с именем "Подписка Concierge".

    Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.

    1. Получите идентификаторы подписок Concierge.

        az account list \
         --refresh \
         --query "[?contains(name, 'Concierge Subscription')].id" \
         --output table
      
    2. Задайте подписку по умолчанию, используя идентификатор подписки. Замените строку {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, и войдите в ту же учетную запись, которая активировала песочницу.

  1. В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.

  2. Если окно терминала отображает pwsh или powershell справа, это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки PowerShell справа, его можно выбрать для запуска оболочки.

    Снимок экрана: окно терминала Visual Studio Code с параметром pwsh, отображаемым в раскрывающемся списке оболочки.

    Если появится оболочка, отличной от pwsh или PowerShell , выберите стрелку раскрывающегося списка оболочки и выберите PowerShell.

    Снимок экрана: окно терминала Visual Studio Code с раскрывающимся списком оболочки терминала и выбранным PowerShell.

  3. Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:

    Set-Location -Path templates
    

Установите Bicep CLI

Чтобы использовать Bicep из Azure PowerShell, установите Bicep CLI.

Вход в Azure с помощью Azure PowerShell

  1. В окне терминала Visual Studio Code выполните следующую команду:

    Connect-AzAccount
    

    Откроется браузер, в котором вы можете выполнить вход в учетную запись Azure. Браузер может быть открыт в фоновом режиме.

  2. После входа в Azure в окне терминала появится список подписок, связанных с этой учетной записью. Если вы активировали песочницу, отобразится подписка с именем Подписка Concierge. Выберите его для остальной части упражнения.

    Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.

    1. Получите идентификатор подписки. Следующая команда выдаст список ваших подписок с идентификаторами. Найдите Concierge Subscription, а затем скопируйте идентификатор из второго столбца. Оно будет выглядеть примерно так — aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

      Get-AzSubscription
      
    2. Измените активную подписку на подписку 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

Проверка развертывания

  1. Перейдите на портал Azure и убедитесь, что вы находитесь в подписке песочницы:

    1. Выберите свой аватар в правом верхнем углу страницы.
    2. Выберите Переключить каталог. В списке выберите каталог Песочница Microsoft Learn.
  2. На левой панели выберите Группы ресурсов.

  3. Выберите "[имя группы ресурсов песочницы]"

  4. В разделе Обзор вы можете увидеть, что одно развертывание выполнено успешно.

    Снимок экрана интерфейса портала Azure для обзора группы ресурсов с разделом развертываний, показывающим, что одно выполнено успешно.

  5. Щелкните ссылку 1 Succeeded (1 успешное), чтобы просмотреть сведения об этом развертывании.

    Снимок экрана интерфейса портала Azure для развертываний с указанным одним развертыванием и успешным статусом.

  6. Нажмите развертывание с именем main, чтобы увидеть, какие ресурсы развернуты, а затем выберите Сведения о развертывании, чтобы развернуть и просмотреть раздел. В этом случае отобразятся план службы приложений и приложение.

    Снимок экрана: интерфейс портала Azure для конкретного развертывания, где показаны такие ресурсы, как план службы приложений и приложение.

  7. В меню слева выберите Входные данные.

    Снимок экрана: интерфейс портала Azure для конкретного развертывания с выделенным пунктом меню

  8. Обратите внимание, что указаны параметры и их значения.

    Снимок экрана: интерфейс портала Azure для конкретного развертывания, где показаны значения параметров.

  9. Оставьте эту страницу открытой в браузере. Позже развертывания потребуется проверить снова.