Упражнение. Добавление ресурсов в стек развертывания

Завершено

Вы находитесь на спринте 3 для нового приложения депозитов. Недавно команда по депозитам запрашивала изменения некоторых используемых служб Azure. Они также попросили создать другие службы, необходимые для поддержки приложения.

В этом упражнении вы создадите стек развертывания в группе ресурсов, которая ссылается на Bicep-файл. Файл определяет план службы приложений, службу приложений и базу данных SQL Azure. Затем вы измените номер SKU плана службы приложений и обновите стек развертывания. Наконец, вы добавите существующую рабочую область Log Analytics и новый экземпляр Application Insights для поддержки мониторинга приложения.

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

  • Создание файла Bicep, определяющего начальную архитектуру
  • Создайте стек развертывания, наложенный на группу ресурсов, с помощью файла Bicep.
  • Изменение свойств существующего управляемого ресурса
  • Обновите файл Bicep, чтобы включить существующую рабочую область Log Analytics и новый экземпляр Application Insights
  • Обновление стека развертывания для развертывания управляемых ресурсов
  • Проверьте управляемые ресурсы стека развертывания.

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

Создание файла Bicep

Первым шагом является создание Bicep-файла, который определяет ресурсы для использования с стеком развертывания.

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

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

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

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

  4. Добавьте в файл следующий код Bicep. В ближайшее время вы развернете шаблон.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @description('The name of the SQL database.')
    param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'
    
    @description('The password of the admin user.')
    param sqlServerAdminUserName string
    
    @description('The name of the admin user.')
    @secure()
    param sqlServerAdminPassword string
    
    @description('The name of the SQL server.')
    param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the web application.')
    param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'
    
    // Variables
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id  
      }
    }
    
    // Resource - SQL Server
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdminUserName
        administratorLoginPassword: sqlServerAdminPassword
      }
    }
    
    // Resource - SQL Database
    resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: {
        name: 'Standard'
        tier: 'Standard'
      }
    }
    

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

    Кроме того, обратите внимание, что вы используете переменную для имени плана Служба приложений, но используете параметры для других имен. У учетных записей хранения и приложений Службы приложений должны быть глобально уникальные имена, а имена планов службы приложений должны уникальными только в пределах своей группы ресурсов. Это различие означает, что не стоит использовать одно и то же имя плана службы приложений в разных развертываниях, если все развертывания относятся к разным группам ресурсов.

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

Создание стека развертывания и развертывание ресурсов в 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 с помощью Azure CLI

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

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

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

  3. В списке найдите подписку, которую вы хотите использовать для этого упражнения.

    Если вы пропустили список при входе, можно использовать следующий фрагмент кода для повторного составления списка подписок.

    az account list --output table
    
  4. Установите подписку по умолчанию для всех команд Azure CLI, которые выполняются во время этого сеанса:

    az account set --subscription "Your Subscription Name or ID"
    

Создание или изменение группы ресурсов

Нам нужно создать группу ресурсов для стека развертывания и управляемых ресурсов. Чтобы создать группу ресурсов, выполните следующую команду из терминала в Visual Studio Code.

az group create \
    --name rg-depositsApplication \
    --location eastus

Чтобы развернуть этот шаблон в 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 войдите в Azure, выполнив следующую команду:

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

  3. Получите идентификатор подписки, которую вы хотите использовать для этого упражнения, выполнив следующую команду:

    Get-AzSubscription
    

    Идентификатор подписки находится во втором столбце. Скопируйте второй столбец. Он выглядит примерно так, как aaaa0a0a-bb1b-cc2c-dd3d-eeee4e4e4e4e4e4e4e.

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

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Создание или изменение группы ресурсов

Нам нужно создать группу ресурсов для стека развертывания и управляемых ресурсов. Чтобы создать группу ресурсов, выполните следующую команду из терминала в Visual Studio Code.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

Создание стека развертывания

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

  1. Чтобы создать стек развертывания, выполните следующую команду из терминала в Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Он предложит ввести значение для sqlServerAdminUserName. Создайте имя администратора SQL Server, за которым следует "ВВОД".

    Снимок экрана: командная строка Azure CLI с запросом ввести имя пользователя администратора SQL Server.

  3. Он предложит ввести значение для sqlServerAdminPassword. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.

    Снимок экрана: командная строка Azure CLI с запросом на ввод пароля администратора SQL Server.

  4. Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.

  1. Чтобы создать стек развертывания, выполните следующую команду из терминала в Visual Studio Code.

    New-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode None
    
  2. Он предложит ввести значение для sqlServerAdminUserName. Создайте имя администратора SQL Server, за которым следует "ВВОД".

    Снимок экрана: командная строка Azure PowerShell с запросом на ввод имени пользователя администратора SQL Server.

  3. Он предложит ввести значение для sqlServerAdminPassword. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.

    Снимок экрана: командная строка Azure PowerShell с запросом на ввод пароля администратора SQL Server.

  4. Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.

Измените файл Bicep, чтобы добавить существующую рабочую область Log Analytics и новый экземпляр Application Insights

  1. Откройте файл main.bicep в Visual Studio Code.

  2. Добавьте выделенный код в раздел переменных файла:

    // Variables
    @description('The name of the Application Insights instance.')
    var applicationInsightsName = 'appinsights-deposits'
    
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    @description('The name of the Log Analytics Workspace.')
    var logAnalyticsWorkspaceName = 'log-deposits'
    
  3. Добавьте следующий код в конец этого файла.

    // Resource - Log Analytics Workspace
    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
      name: logAnalyticsWorkspaceName
      location: location
      properties: {
        retentionInDays: 30
        sku: {
          name: 'PerGB2018'
        }
      }
    }
    
    // Resource - Application Insights
    resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
      name: applicationInsightsName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
        WorkspaceResourceId: logAnalyticsWorkspace.id
      }
    }
    
  4. Сохраните изменения в файле.

Измените файл Bicep, чтобы изменить план службы приложений и службу приложений

  1. Откройте файл main.bicep в Visual Studio Code.

  2. Измените имя SKU плана службы приложений на F1S1:

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        capacity: 1
      }
    }
    
  3. Добавьте выделенный код в провод в экземпляр Application Insights:

    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }     
          ]
        }    
      }
    }
    
  4. Сохраните изменения в файле.

Обновление стека развертывания

После изменения файла Bicep мы хотим обновить стек развертывания, чтобы изменения, внесенные в ресурсы в файле Bicep, были реализованы.

  1. Чтобы обновить стек развертывания, выполните следующую команду из терминала в Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Вы получите сообщение о том, что стек уже существует в текущей подписке. Если значение действия для неуправляемого параметра изменилось, предупреждение оповещает вас о новых значениях. Нажмите клавишу yВВОД, а затем нажмите клавишу ВВОД.

    Снимок экрана: предупреждение командной строки Azure CLI о том, что стек развертывания уже существует.

  3. Он предложит ввести значение для sqlServerAdminUserName. Создайте имя администратора SQL Server, за которым следует "ВВОД".

    Снимок экрана: командная строка Azure CLI с запросом ввести имя пользователя администратора SQL Server.

  4. Он предложит ввести значение для sqlServerAdminPassword. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.

    Снимок экрана: командная строка Azure CLI с запросом на ввод пароля администратора SQL Server.

  5. Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.

После изменения файла Bicep мы хотим обновить стек развертывания, чтобы изменения, внесенные в план службы приложений, были реализованы.

  1. Чтобы обновить стек развертывания, выполните следующую команду из терминала в Visual Studio Code.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. Он предложит ввести значение для sqlServerAdminUserName. Создайте имя администратора SQL Server, за которым следует "ВВОД".

    Снимок экрана: командная строка Azure PowerShell с запросом на ввод имени пользователя администратора SQL Server.

  3. Он предложит ввести значение для sqlServerAdminPassword. Создайте сложный пароль для администратора SQL Server, а затем —ВВОД.

    Снимок экрана: командная строка Azure PowerShell с запросом на ввод пароля администратора SQL Server.

  4. Дождитесь завершения операции обновления, прежде чем перейти к следующей задаче.

Проверка обновления стека развертывания и управляемых ресурсов

После завершения обновления мы хотим проверить, обновлен ли номер плана службы приложений и что стек развертывания управляет существующей рабочей областью Log Analytics и новым экземпляром Application Insights.

  1. Чтобы просмотреть конфигурацию плана службы приложений, выполните следующую команду из терминала в Visual Studio Code.

    az appservice plan show \
        --name plan-deposits
        --resource-group rg-depositsApplication
    
  2. Обратите внимание на раздел SKU выходных данных. План службы приложений теперь находится на SKU S1. Он должен быть похож на следующие выходные данные:

    "sku": {
        "capacity": 1,
        "family": "S",
        "name": "S1",
        "size": "S1",
        "tier": "Standard"
    },
    
  3. Чтобы просмотреть конфигурацию стека развертывания, выполните следующую команду из терминала в Visual Studio Code.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  4. Обратите внимание на раздел ресурсов выходных данных. Теперь мы видим существующую рабочую область Log Analytics и новый экземпляр Application Insights, указанный как управляемые ресурсы. Результат должен выглядеть примерно так:

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    
  1. Чтобы просмотреть конфигурацию плана службы приложений, выполните следующую команду из терминала в Visual Studio Code.

    $plan = Get-AzAppServicePlan `
        -ResourceGroupName rg-depositsApplication `
        -Name plan-deposits
    $sku = $plan.Sku
    $sku
    
  2. Обратите внимание на выходные данные. План службы приложений теперь находится на SKU S1. Это должно быть похоже на следующее:

    Name         : S1
    Tier         : Standard
    Size         : S1
    Family       : S
    Capacity     : 1
    
  3. Чтобы просмотреть конфигурацию стека развертывания, выполните следующую команду из терминала в Visual Studio Code.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  4. Обратите внимание на раздел ресурсов выходных данных. Теперь мы видим существующую рабочую область Log Analytics и новый экземпляр Application Insights, указанный как управляемые ресурсы. Результат должен выглядеть примерно так:

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/                        sql-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits