Упражнение. Создание и использование модуля

Завершено

Вам поручили добавить сеть доставки содержимого (CDN) на веб-сайт компании, посвященный выпуску игрушечного вомбата. Однако другие отделы вашей компании сообщили, что им не нужна такая сеть. В этом упражнении вы будете создавать модули для веб-сайта и CDN, а также добавлять модули в шаблон.

В процессе вы:

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

В этом упражнении используется расширение 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). Запомните расположение, в котором вы сохранили файл. Например, можно создать папку templates, куда будет сохранен файл.

Создайте модуль приложения

  1. Создайте новую папку с именем модули в той же папке, где вы создали файл main.bicep. В папке modules создайте файл с именем app.bicep. Сохраните файл.

  2. Добавьте в файл app.bicep следующее содержимое:

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @description('The name of the App Service app.')
    param appServiceAppName string
    
    @description('The name of the App Service plan.')
    param appServicePlanName string
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    
    @description('The default host name of the App Service app.')
    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

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

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

Добавление модуля в шаблон Bicel

Здесь вы добавляете в шаблон Bicep модуль приложения как отправную точку.

  1. Откройте файл main.bicep.

  2. Добавьте в файл следующие параметры и переменную:

    @description('The Azure region into which the resources should be deployed.')
    param location string = 'westus3'
    
    @description('The name of the App Service app.')
    param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the App Service plan SKU.')
    param appServicePlanSkuName string = 'F1'
    
    var appServicePlanName = 'toy-product-launch-plan'
    

    Поскольку это шаблон, который вы планируете развернуть для веб-сайтов игрушек, он будет немного более специфическим. Имя плана службы приложений определяется как переменная. Параметр SKU имеет значение по умолчанию, которое имеет смысл для веб-сайта, посвященного выпуску игрушки.

    Совет

    Вы указываете, что параметру location должно быть присвоено значение westus3. Обычно ресурсы создаются в том же расположении, что и группа ресурсов, с помощью свойства resourceGroup().location. Но при работе с песочницей Microsoft Learn необходимо использовать определенные регионы Azure, которые не совпадают с расположением группы ресурсов.

  3. Под параметрами создайте пустую строку. Теперь введите первую строку определения модуля приложения:

    module app 'modules/app.bicep' = {
    

    В процессе ввода обратите внимание, что расширение Bicep для Visual Studio Code помогает сформировать шаблон объявления модуля. При вводе пути к модулю и вводе символа равенства (=) всплывающее меню отображается с несколькими параметрами.

  4. Выберите обязательные свойства во всплывающем меню:

    Снимок экрана Visual Studio Code, на котором показана функция формирования шаблона модуля с требуемыми свойствами.

  5. Завершите объявление модуля:

    module app 'modules/app.bicep' = {
      name: 'toy-launch-app'
      params: {
        appServiceAppName: appServiceAppName
        appServicePlanName: appServicePlanName
        appServicePlanSkuName: appServicePlanSkuName
        location: location
      }
    }
    
  6. В нижней части файла определите выходные данные:

    @description('The host name to use to access the website.')
    output websiteHostName string = app.outputs.appServiceAppHostName
    
  7. Сохраните изменения в файле.

Создание модуля для сети доставки содержимого

  1. В папке modules создайте файл с именем cdn.bicep. Сохраните файл.

  2. Добавьте в файл cdn.bicep следующее содержимое:

    @description('The host name (address) of the origin server.')
    param originHostName string
    
    @description('The name of the CDN profile.')
    param profileName string = 'cdn-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the CDN endpoint')
    param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}'
    
    @description('Indicates whether the CDN endpoint requires HTTPS connections.')
    param httpsOnly bool
    
    var originName = 'my-origin'
    
    resource cdnProfile 'Microsoft.Cdn/profiles@2024-02-01' = {
      name: profileName
      location: 'global'
      sku: {
        name: 'Standard_Microsoft'
      }
    }
    
    resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-02-01' = {
      parent: cdnProfile
      name: endpointName
      location: 'global'
      properties: {
        originHostHeader: originHostName
        isHttpAllowed: !httpsOnly
        isHttpsAllowed: true
        queryStringCachingBehavior: 'IgnoreQueryString'
        contentTypesToCompress: [
          'text/plain'
          'text/html'
          'text/css'
          'application/x-javascript'
          'text/javascript'
        ]
        isCompressionEnabled: true
        origins: [
          {
            name: originName
            properties: {
              hostName: originHostName
            }
          }
        ]
      }
    }
    
    @description('The host name of the CDN endpoint.')
    output endpointHostName string = endpoint.properties.hostName
    

    Этот файл развертывает два ресурса: профиль CDN и конечную точку CDN.

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

Добавление модулей в основной шаблон Bicep

  1. Откройте файл main.bicep.

  2. Под параметром appServicePlanSkuName добавьте следующие параметры:

    @description('Indicates whether a CDN should be deployed.')
    param deployCdn bool = true
    
  3. Под определением модуля app определите модуль cdn:

    module cdn 'modules/cdn.bicep' = if (deployCdn) {
      name: 'toy-launch-cdn'
      params: {
        httpsOnly: true
        originHostName: app.outputs.appServiceAppHostName
      }
    }
    

    Обратите внимание, что модуль имеет условие: развертывание модуля выполняется только в том случае, если значение параметра deployCdn равно true. Кроме того, обратите внимание, что параметр originHostName модуля имеет значение, равное значению выходных данных appServiceAppHostName модуля app.

  4. Обновите выходные данные имени узла, чтобы обеспечить выбор правильного имени узла. При развертывании CDN необходимо, чтобы имя узла совпадало с именем конечной точки CDN.

    output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
    
  5. Сохраните изменения в файле.

Разверните шаблон Bicep в Azure

Чтобы развернуть этот шаблон в Azure, необходимо войти в свою учетную запись Azure из терминала Visual Studio Code. У вас также должен быть установлен интерфейс Azure CLI, и необходимо войти под той же учетной записью, с которой вы активировали песочницу.

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

  2. Если оболочка в правой части окна терминала указана как bash, то открыта подходящая оболочка, и вы можете перейти к следующему разделу.

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

  3. Если появится оболочка, отличной от bash, выберите стрелку раскрывающегося списка оболочки и выберите Azure Cloud Shell (Bash).

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

  4. В списке оболочек терминала выберите bash.

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

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

    cd templates
    

Установка Bicep

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

az bicep install && az bicep upgrade

Вход в Azure

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

    az login
    
  2. В открывшемся браузере войдите в свою учетную запись Azure.

    Терминал Visual Studio Code отобразит список подписок, связанных с данной учетной записью.

  3. Установите подписку по умолчанию для всех команд Azure CLI, которые вы выполняете в этом сеансе.

    az account set --subscription "Concierge Subscription"
    

    Примечание.

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

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

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

Запустите следующий код из терминала в Visual Studio Code, чтобы развернуть шаблон Bicep в Azure. Этот процесс может занять пару минут. Затем вы увидите, что развертывание успешно выполнено.

az deployment group create --template-file main.bicep

Статус Running... появится в окне терминала.

Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что вы установили Azure PowerShell, и войдите в ту же учетную запись, которая активировала песочницу.

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

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

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

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

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

  4. В списке оболочек терминала выберите PowerShell или pwsh.

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

  5. Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке 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. Именно ее вы будете использовать в оставшейся части упражнения.

  3. Установите подписку по умолчанию для всех команд Azure PowerShell, которые вы выполняете в этом сеансе.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Примечание.

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

  4. Получите идентификатор подписки. Следующая команда выдаст список ваших подписок с идентификаторами. Найдите Concierge Subscription, а затем скопируйте идентификатор из второго столбца. Оно будет выглядеть примерно так — cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

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

Разверните шаблон в Azure, выполнив следующие команды Azure PowerShell в терминале. Это может занять пару минут. Затем вы увидите, что развертывание успешно выполнено.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Проверьте журнал развертывания.

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

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

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

  4. В меню слева выберите Развертывания.

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

    В списке перечислены три развертывания.

  5. Выберите главное развертывание и разверните узел Сведения о развертывании.

    Обратите внимание, что указаны оба модуля, и их типы отображаются как Microsoft.Resources/deployments. Модули включены в список дважды, так как в шаблоне также имеется ссылка на их выходные данные.

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

  6. Выберите развертывания toy-launch-cdn и toy-launch-app и просмотрите ресурсы, которые были развернуты в рамках каждого из них. Обратите внимание, что они соответствуют ресурсам, определенным в соответствующем модуле.

Тестирование веб-сайта

  1. Выберите развертывание toy-launch-app.

  2. Выберите Выходные данные.

    Снимок экрана портала Azure: развертывание с выделенным пунктом меню «Выходные данные».

  3. Нажмите кнопку копирования для выходных данных appServiceAppHostName.

  4. В новой вкладке браузера попробуйте перейти по адресу, скопированному в предыдущем шаге. Адрес должен начинаться с https://.

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

    Откроется страница приветствия службы приложений, где показано, что вы успешно развернули приложение.

  5. Перейдите к главному развертыванию и выберите Выходные данные.

  6. Скопируйте значение выходных данных websiteHostName. Обратите внимание, что это имя узла отличается, так как это имя узла для сети доставки содержимого Azure.

  7. В новой вкладке браузера попробуйте перейти к имени узла, скопированному в предыдущем шаге. Добавьте https:// в начало адреса.

    Конечные точки CDN станут активными через несколько минут. Если вы не нашли ошибку страницы, подождите несколько минут и повторите попытку вставки ссылки. Кроме того, убедитесь, в том что вы добавили https:// в начало URL-адреса, чтобы использовать HTTPS.

    Когда конечная точка CDN активна, вы увидите ту же страницу приветствия службы приложений. На этот раз она обслуживается службой сети доставки содержимого Azure, что позволяет повысить производительность веб-сайта.

    Снимок экрана страницы приветствия в веб-приложении, где в адресной строке показана конечная точка CDN.