Упражнение. Создание и развертывание спецификации шаблона

Завершено

Примечание.

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

В вашей компании, ваша команда уже некоторое время работает с Azure, и вы создали множество шаблонов, которые вы используете ежедневно. Вы решили взять один шаблон и создать спецификацию шаблона. Вы начинаете с шаблона, который используете для создания учетных записей Azure Cosmos DB.

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

В этом упражнении выполняется публикация шаблона Azure Cosmos DB как спецификации шаблона.

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

  • Создайте шаблон, который будет использоваться в как спецификация шаблона.
  • Обновите шаблон, чтобы упростить понимание и работу с параметрами.
  • Опубликуйте спецификацию шаблона.
  • Проверьте спецификацию шаблона с помощью портала Microsoft Azure.
  • Разверните спецификацию шаблона, протестировать ее.
  • проверка развертывания.

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

Создание шаблона

Начните с одного из созданных командой шаблонов. Шаблон развертывает учетную запись Azure Cosmos DB и настраивает ее для включения непрерывного резервного копирования.

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

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

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

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

  4. Скопируйте следующий код в файл main.bicep.

    param location string = resourceGroup().location
    param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
    
    resource cosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2021-04-15' = {
      name: cosmosDBAccountName
      kind: 'GlobalDocumentDB'
      location: location
      properties: {
        consistencyPolicy: {
          defaultConsistencyLevel: 'Session'
        }
        locations: [
          {
            locationName: location
            failoverPriority: 0
            isZoneRedundant: false
          }
        ]
        databaseAccountOfferType: 'Standard'
        enableAutomaticFailover: false
        enableMultipleWriteLocations: false
        backupPolicy: {
          type: 'Continuous'
        }
      }
    }
    

    Обратите внимание, что для параметра backupPolicy задано значение Continuous. Это значение соответствует настройке постоянного, а не периодического резервного копирования данных Azure Cosmos DB.

  5. Сохраните файл.

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

  2. Создайте новый файл с именем azuredeploy.json.

  3. Сохраните пустой файл, чтобы в Visual Studio Code загрузились инструменты создания шаблонов Azure Resource Manager (шаблон ARM).

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

  4. Скопируйте следующий код в файл azuredeploy.json.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]"
        },
        "cosmosDBAccountName": {
          "type": "string",
          "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]"
        }
      },
      "resources": [
        {
          "type": "Microsoft.DocumentDB/databaseAccounts",
          "apiVersion": "2021-04-15",
          "name": "[parameters('cosmosDBAccountName')]",
          "kind": "GlobalDocumentDB",
          "location": "[parameters('location')]",
          "properties": {
            "consistencyPolicy": {
              "defaultConsistencyLevel": "Session"
            },
            "locations": [
              {
                "locationName": "[parameters('location')]",
                "failoverPriority": 0,
                "isZoneRedundant": false
              }
            ],
            "databaseAccountOfferType": "Standard",
            "enableAutomaticFailover": false,
            "enableMultipleWriteLocations": false,
            "backupPolicy": {
              "type": "Continuous"
            }
          }
        }
      ]
    }
    

    Обратите внимание, что для параметра backupPolicy задано значение Continuous. Это значение соответствует настройке постоянного, а не периодического резервного копирования данных Azure Cosmos DB.

  5. Сохраните файл.

Упрощение понимания параметров

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

  1. location Обновите определение параметра, добавив описание:

    @description('The Azure region into which the Cosmos DB resources should be deployed.')
    param location string = resourceGroup().location
    
  2. Обновите определение параметра cosmosDBAccountName, чтобы добавить описание и указать минимальную и максимальную длину имени.

    @description('The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens.')
    @minLength(3)
    @maxLength(44)
    param cosmosDBAccountName string = 'toy-${uniqueString(resourceGroup().id)}'
    
  3. Сохраните файл.

  1. location Обновите определение параметра, добавив описание:

    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The Azure region into which the Cosmos DB resources should be deployed."
      }
    },
    
  2. Обновите определение параметра cosmosDBAccountName, чтобы добавить описание и указать минимальную и максимальную длину имени.

    "cosmosDBAccountName": {
      "type": "string",
      "defaultValue": "[concat('toy-', uniqueString(resourceGroup().id))]",
      "maxLength": 44,
      "minLength": 3,
      "metadata": {
        "description": "The name of the Cosmos DB account. This name must be globally unique, and it must only include lowercase letters, numbers, and hyphens."
      }
    }
    
  3. Сохраните файл.

Вход в 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, войдите в свою учетную запись 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 из терминала 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
    

Вход в 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, войдите в свою учетную запись 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
    

Вход в 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 PowerShell в терминале Visual Studio Code.

New-AzTemplateSpec `
  -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
  -Name ToyCosmosDBAccount `
  -Location westus `
  -DisplayName 'Cosmos DB account' `
  -Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
  -Version '1.0' `
  -TemplateFile main.bicep
New-AzTemplateSpec `
  -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
  -Name ToyCosmosDBAccount `
  -Location westus `
  -DisplayName 'Cosmos DB account' `
  -Description "This template spec creates a Cosmos DB account that meets our company's requirements." `
  -Version '1.0' `
  -TemplateFile azuredeploy.json

Опубликуйте спецификацию шаблона с помощью этой команды Azure CLI в терминале Visual Studio Code.

az ts create \
  --name ToyCosmosDBAccount \
  --location westus \
  --display-name "Cosmos DB account" \
  --description "This template spec creates a Cosmos DB account that meets our company's requirements." \
  --version 1.0 \
  --template-file main.bicep
az ts create \
  --name ToyCosmosDBAccount \
  --location westus \
  --display-name "Cosmos DB account" \
  --description "This template spec creates a Cosmos DB account that meets our company's requirements." \
  --version 1.0 \
  --template-file azuredeploy.json

Используйте портал Azure для проверки спецификации шаблона.

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

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

  3. Выберите "[имя группы ресурсов песочницы]" Обратите внимание, что спецификация шаблона включена в список ресурсов.

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

  4. Выберите ToyCosmosDBAccount, чтобы открыть спецификацию шаблона. Отображаются версии и файл шаблона.

    Снимок экрана: интерфейс портала Azure для спецификации шаблона.

Развертывание спецификации шаблона

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

  1. Получите идентификатор ресурса версии спецификации шаблона, выполнив следующую команду Azure PowerShell.

    $templateSpecVersionResourceId = (`
       Get-AzTemplateSpec `
          -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
          -Name ToyCosmosDBAccount `
          -Version 1.0 `
       ).Versions[0].Id
    

    Обратите внимание, что используется свойство Versions. При развертывании спецификации шаблона необходимо указать идентификатор ресурса конкретной версии спецификации шаблона, которую необходимо использовать.

  2. Разверните спецификацию шаблона с помощью этой команды Azure PowerShell в терминале Visual Studio Code.

    New-AzResourceGroupDeployment -TemplateSpecId $templateSpecVersionResourceId
    
  1. Получите идентификатор ресурса версии спецификации шаблона, выполнив следующую команду Azure CLI.

    id=$(az ts show \ 
     --name ToyCosmosDBAccount \
     --resource-group "<rgn>[sandbox resource group name]</rgn>" \
     --version "1.0" \
     --query "id")
    
  2. Разверните спецификацию шаблона с помощью этой команды Azure CLI в терминале Visual Studio Code.

    az deployment group create --template-spec $id
    

Развертывание может занять одну–две минуты.

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

  1. В своем браузере вернитесь на портал Azure. Перейдите к группе ресурсов.

  2. Рядом с развертываниями выберите ссылку "Успешно выполнено ", чтобы просмотреть сведения о развертывании.

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

  3. Выберите развертывание.

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

    Имя развертывания может отличаться от имени в примере.

  4. Выберите пункт Сведения о развертывании, чтобы развернуть его. Убедитесь, что развернута учетная запись Azure Cosmos DB.

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