Упражнение. Предварительный просмотр изменений с помощью команды "что если"

Завершено

Примечание.

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

Команда разработчиков компании по производству игрушек попросила вас обновить шаблон, который настраивает виртуальную сеть. В этом уроке вы используете what-if для проверки последствий развертывания обновленного шаблона.

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

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

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

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

Создание начального шаблона

Начните с существующего шаблона, который использовался вашей командой. Этот шаблон создает виртуальную сеть.

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

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

  3. Сохраните пустой файл, чтобы Visual Studio Code загрузил инструменты шаблона 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": {},
      "variables": {},
      "resources": [
        {
          "apiVersion": "2024-01-01",
          "type": "Microsoft.Network/virtualNetworks",
          "name": "vnet-001",
          "location": "[resourceGroup().location]",
          "tags": {
            "CostCenter": "12345",
            "Owner": "Team A"
          },
          "properties": {
            "addressSpace": {
              "addressPrefixes": [
                "10.0.0.0/16"
              ]
            },
            "enableVmProtection": false,
            "enableDdosProtection": false,
            "subnets": [
              {
                "name": "subnet001",
                "properties": {
                  "addressPrefix": "10.0.0.0/24"
                }
              },
              {
                "name": "subnet002",
                "properties": {
                  "addressPrefix": "10.0.1.0/24"
                }
              }
            ]
          }
        }
      ]
    }
    
  5. Сохраните шаблон.

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

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

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

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

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

    resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = {
      name: 'vnet-001'
      location: resourceGroup().location
      tags: {
        'CostCenter': '12345'
        'Owner': 'Team A'
      }
      properties: {
        addressSpace: {
          addressPrefixes: [
            '10.0.0.0/16'
          ]
        }
        enableVmProtection: false
        enableDdosProtection: false
        subnets: [
          {
            name: 'subnet001'
            properties: {
              addressPrefix: '10.0.0.0/24'
            }
          }
          {
            name: 'subnet002'
            properties: {
              addressPrefix: '10.0.1.0/24'
            }
          }
        ]
      }
    }
    
  5. Сохраните шаблон.

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

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

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

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

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

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

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

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

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

    cd templates
    

Вход в 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 PowerShell

Выполните команду New-AzResourceGroupDeployment, чтобы развернуть шаблон.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Текст Выполняется... отображается в терминале. Развертывание занимает минуту или два.

Развертывание шаблона с помощью Azure PowerShell

Выполните команду New-AzResourceGroupDeployment, чтобы развернуть шаблон.

New-AzResourceGroupDeployment -TemplateFile azuredeploy.json

Текст Выполняется... отображается в терминале. Развертывание занимает минуту или два.

Развертывание шаблона с помощью интерфейса командной строки Azure

Выполните команду az deployment group create, чтобы развернуть шаблон.

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

Развертывание занимает минуту или два.

Развертывание шаблона с помощью интерфейса командной строки Azure

Выполните команду az deployment group create, чтобы развернуть шаблон.

az deployment group create --template-file azuredeploy.json

Развертывание занимает минуту или два.

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

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

  1. Щелкните свой аватар в правом верхнем углу страницы.

  2. Выберите Переключить каталог. В списке выберите каталог Песочница Microsoft Learn.

  3. Выберите элемент Группы ресурсов.

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

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

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

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

  7. Выберите развертывание main, чтобы увидеть, какие ресурсы были развернуты. В данном случае развернута одна виртуальная сеть (диапазон адресов 10.0.0.0/16) с двумя подсетями.

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

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

    Оставьте страницу открытой в браузере, чтобы снова проверить развертывания.

Изменение шаблона

  1. В файле azuredeploy.json в Visual Studio Code удалите тег с именем Owner и его значение. После этого свойство tags виртуальной сети должно выглядеть следующим образом:

    "tags": {
      "CostCenter": "12345"
    },
    
  2. В объекте addressPrefixes измените /16 на /15. После этого свойство addressSpace виртуальной сети должно выглядеть следующим образом:

    "addressSpace": {
      "addressPrefixes": [
        "10.0.0.0/15"
      ]
    },
    
  3. Удалите подсеть с именем subnet001. Убедитесь, что вы удалили весь объект подсети целиком. После этого свойство subnets виртуальной сети должно выглядеть следующим образом:

    "subnets": [
      {
        "name": "subnet002",
        "properties": {
          "addressPrefix": "10.0.1.0/24"
        }
      }
    ]
    
  4. Сохраните шаблон.

  1. В файле main.bicep в Visual Studio Code удалите тег с именем Owner и его значение. После этого свойство tags виртуальной сети должно выглядеть следующим образом:

    tags: {
      'CostCenter': '12345'
    }
    
  2. В объекте addressPrefixes измените /16 на /15. После этого свойство addressSpace виртуальной сети должно выглядеть следующим образом:

    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/15'
      ]
    }
    
  3. Удалите подсеть с именем subnet001. Убедитесь, что вы удалили весь объект подсети целиком. После этого свойство subnets виртуальной сети должно выглядеть следующим образом:

    subnets: [
      {
        name: 'subnet002'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
    
  4. Сохраните шаблон.

Выполнение команды "что если" с измененным шаблоном

Используйте командлет New-AzResourceGroupDeployment с флагом -WhatIf, чтобы выполнить операцию "что если".

New-AzResourceGroupDeployment `
  -WhatIf `
  -TemplateFile main.bicep

Используйте командлет New-AzResourceGroupDeployment с флагом -WhatIf, чтобы выполнить операцию "что если".

New-AzResourceGroupDeployment `
  -WhatIf `
  -TemplateFile azuredeploy.json

Запустите команду az deployment group what-if, чтобы выполнить операцию "что если":

az deployment group what-if \
  --template-file main.bicep

Запустите команду az deployment group what-if, чтобы выполнить операцию "что если":

az deployment group what-if \
  --template-file azuredeploy.json

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

Снимок экрана Azure CLI с выходными данными операции

Снимок экрана Azure PowerShell с выходными данными операции

Обратите внимание, что результат закодирован цветом помимо префикса:

  • сиреневый цвет и префикс ~ для изменений;
  • зеленый цвет и префикс + для новых ресурсов;
  • оранжевый цвет и префикс - для удаления.

Удаление ресурсов в шаблоне

  1. Измените файл azuredeploy.json в Visual Studio Code и удалите все содержимое массива resources. Готовый шаблон должен выглядеть следующим образом:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [
      ]
    }
    
  2. Сохраните шаблон.

  1. В файле main.bicep в Visual Studio Code удалите все содержимое файла, но не удаляйте сам файл.

  2. Сохраните шаблон.

Развертывание в полном режиме с параметром подтверждения

Далее вы развернете пустой шаблон в существующей среде.

Предупреждение

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

Предупреждение

В реальности эта процедура приведет к удалению всех ресурсов в облаке. Она представляет интерес как мысленный эксперимент. Использовать этот код следует с осторожностью. Как минимум используйте флаг --confirm-with-what-if, чтобы можно было отменить эту операцию, если вам не нравятся предлагаемые изменения.

  1. Запустите командлет New-AzResourceGroupDeployment с флагом -Mode Complete, чтобы выполнить развертывание в полном режиме:

    New-AzResourceGroupDeployment `
    -Mode Complete `
    -Confirm `
    -TemplateFile main.bicep
    

    Выходные данные должны выглядеть примерно следующим образом:

    Снимок экрана Azure PowerShell с выходными данными операции подтверждения развертывания.

    Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.

  2. Введите A, чтобы выбрать вариант [A] Yes to All (Да для всех). Это приведет к выполнению развертывания и очистке среды.

  1. Запустите командлет New-AzResourceGroupDeployment с флагом -Mode Complete, чтобы выполнить развертывание в полном режиме:

    New-AzResourceGroupDeployment `
    -Mode Complete `
    -Confirm `
    -TemplateFile azuredeploy.json
    

    Выходные данные должны выглядеть примерно следующим образом:

    Снимок экрана Azure PowerShell с выходными данными операции подтверждения развертывания.

    Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.

  2. Введите A, чтобы выбрать вариант [A] Yes to All (Да для всех). Это приведет к выполнению развертывания и очистке среды.

  1. Выполните командлет az deployment group create с флагом --mode Complete, чтобы создать развертывание в полном режиме:

    az deployment group create \
      --mode Complete \
      --confirm-with-what-if \
      --template-file main.bicep
    

    Выходные данные должны выглядеть примерно следующим образом:

    Снимок экрана Azure CLI с выходными данными операции подтверждения развертывания.

    Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.

  2. Введите Y, чтобы выбрать вариант Yes (Да). Это приведет к выполнению развертывания и очистке среды.

  1. Выполните командлет az deployment group create с флагом --mode Complete, чтобы создать развертывание в полном режиме:

    az deployment group create \
      --mode Complete \
      --confirm-with-what-if \
      --template-file azuredeploy.json
    

    Выходные данные должны выглядеть примерно следующим образом:

    Снимок экрана Azure CLI с выходными данными операции подтверждения развертывания.

    Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.

  2. Введите Y, чтобы выбрать вариант Yes (Да). Это приведет к выполнению развертывания и очистке среды.

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

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

Снимок экрана c интерфейсом портала Azure, в котором показано развертывание в полном режиме (ресурс виртуальной сети отсутствует).