Упражнение. Предварительный просмотр изменений с помощью команды "что если"
Примечание.
Когда вы в первый раз активируете песочницу и принимаете условия, ваша учетная запись Майкрософт связывается с новым каталогом Azure с именем Microsoft Learn Sandbox. Вы также добавлены к специальной подписке под названием Concierge Subscription.
Команда разработчиков компании по производству игрушек попросила вас обновить шаблон, который настраивает виртуальную сеть. В этом уроке вы используете what-if для проверки последствий развертывания обновленного шаблона.
В процессе вы:
- Создайте и разверните исходный шаблон.
- Подготовьтесь к развертыванию шаблона, который немного отличается, и используйте операцию "что если" для просмотра ожидаемых изменений.
- Используйте полное развертывание для развертывания пустого шаблона и используйте операцию "что если" для просмотра ожидаемых изменений.
В этом упражнении используются инструменты Azure Resource Manager для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.
В этом упражнении используется расширение Bicep для Visual Studio Code. Убедитесь, что это расширение установлено в Visual Studio Code.
Создание начального шаблона
Начните с существующего шаблона, который использовался вашей командой. Этот шаблон создает виртуальную сеть.
Откройте Visual Studio Code.
Создайте новый файл с именем azuredeploy.json.
Сохраните пустой файл, чтобы Visual Studio Code загрузил инструменты шаблона ARM.
Можно выбрать Файл>Сохранить как или нажать клавиши CTRL+S в Windows (⌘+S в macOS). Обязательно запомните, где сохранен файл. Например, можно создать для него папку scripts.
Скопируйте следующий код в файл 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" } } ] } } ] }
Сохраните шаблон.
Откройте Visual Studio Code.
Создайте файл с именем main.bicep.
Сохраните пустой файл, куда Visual Studio Code загрузит средства Bicep.
Можно выбрать Файл>Сохранить как или нажать клавиши CTRL+S в Windows (⌘+S в macOS). Обязательно запомните, где сохранен файл. Например, можно создать для него папку scripts.
Скопируйте следующий код в файл 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' } } ] } }
Сохраните шаблон.
Развертывание шаблона в Azure
Чтобы развернуть этот шаблон в Azure, войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что вы установили Azure PowerShell, и войдите в ту же учетную запись, которая активировала песочницу.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает pwsh или powershell справа, это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки PowerShell справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от pwsh или PowerShell , выберите стрелку раскрывающегося списка оболочки и выберите PowerShell.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
Set-Location -Path templates
Установите Bicep CLI
Чтобы использовать Bicep из Azure PowerShell, установите Bicep CLI.
Вход в Azure с помощью Azure PowerShell
В окне терминала Visual Studio Code выполните следующую команду:
Connect-AzAccount
Откроется браузер, в котором вы можете выполнить вход в учетную запись Azure. Браузер может быть открыт в фоновом режиме.
После входа в Azure в окне терминала появится список подписок, связанных с этой учетной записью. Если вы активировали песочницу, отобразится подписка с именем Подписка Concierge. Выберите его для остальной части упражнения.
Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.
Получите идентификатор подписки. Следующая команда выдаст список ваших подписок с идентификаторами. Найдите
Concierge Subscription
, а затем скопируйте идентификатор из второго столбца. Оно будет выглядеть примерно так —aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Измените активную подписку на подписку 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, и необходимо войти под той же учетной записью, с которой вы активировали песочницу.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает bash справа , это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки Bash справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от bash , выберите стрелку раскрывающегося списка оболочки и выберите Git Bash.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
cd templates
Установка Bicep
Выполните следующую команду, чтобы убедиться, что у вас установлена последняя версия Bicep:
az bicep install && az bicep upgrade
Вход в Azure
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
az login
В открывшемся браузере войдите в свою учетную запись Azure. Терминал Visual Studio Code отобразит список подписок, связанных с данной учетной записью. Выберите подписку с именем "Подписка Concierge".
Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.
Получите идентификаторы подписок Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Задайте подписку по умолчанию, используя идентификатор подписки. Замените строку {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, и войдите в ту же учетную запись, которая активировала песочницу.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает pwsh или powershell справа, это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки PowerShell справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от pwsh или PowerShell , выберите стрелку раскрывающегося списка оболочки и выберите PowerShell.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
Set-Location -Path templates
Вход в Azure с помощью Azure PowerShell
В окне терминала Visual Studio Code выполните следующую команду:
Connect-AzAccount
Откроется браузер, в котором вы можете выполнить вход в учетную запись Azure. Браузер может быть открыт в фоновом режиме.
После входа в Azure в окне терминала появится список подписок, связанных с этой учетной записью. Если вы активировали песочницу, отобразится подписка с именем Подписка Concierge. Выберите его для остальной части упражнения.
Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.
Получите идентификатор подписки. Следующая команда выдаст список ваших подписок с идентификаторами. Найдите
Concierge Subscription
, а затем скопируйте идентификатор из второго столбца. Оно будет выглядеть примерно так —aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Измените активную подписку на подписку 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, и необходимо войти под той же учетной записью, с которой вы активировали песочницу.
В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.
Если окно терминала отображает bash справа , это означает, что правильная оболочка уже открыта. Кроме того, если вы видите значок оболочки Bash справа, его можно выбрать для запуска оболочки.
Если появится оболочка, отличной от bash , выберите стрелку раскрывающегося списка оболочки и выберите Git Bash.
Перейдите в терминале в каталог, где сохранили свой шаблон. Например, если вы сохранили его в папке templates, можно использовать следующую команду:
cd templates
Вход в Azure
В окне терминала Visual Studio Code войдите в Azure, выполнив следующую команду:
az login
В открывшемся браузере войдите в свою учетную запись Azure. Терминал Visual Studio Code отобразит список подписок, связанных с данной учетной записью. Выберите подписку с именем "Подписка Concierge".
Если вы недавно использовали несколько песочниц, в терминале может отображаться несколько экземпляров подписки Concierge. В этом случае для установки подписки по умолчанию выполните указанные ниже два шага.
Получите идентификаторы подписок Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Задайте подписку по умолчанию, используя идентификатор подписки. Замените строку {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. Перейдите на него и убедитесь в том, что вы используете подписку песочницы.
Щелкните свой аватар в правом верхнем углу страницы.
Выберите Переключить каталог. В списке выберите каталог Песочница Microsoft Learn.
Выберите элемент Группы ресурсов.
Выберите "
[имя группы ресурсов песочницы] "В разделе Обзор вы увидите, что одно развертывание выполнено успешно.
Щелкните ссылку 1 Succeeded (1 успешное), чтобы просмотреть сведения об этом развертывании.
Выберите развертывание main, чтобы увидеть, какие ресурсы были развернуты. В данном случае развернута одна виртуальная сеть (диапазон адресов 10.0.0.0/16) с двумя подсетями.
Оставьте страницу открытой в браузере, чтобы снова проверить развертывания.
Изменение шаблона
В файле azuredeploy.json в Visual Studio Code удалите тег с именем
Owner
и его значение. После этого свойствоtags
виртуальной сети должно выглядеть следующим образом:"tags": { "CostCenter": "12345" },
В объекте
addressPrefixes
измените/16
на/15
. После этого свойствоaddressSpace
виртуальной сети должно выглядеть следующим образом:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Удалите подсеть с именем
subnet001
. Убедитесь, что вы удалили весь объект подсети целиком. После этого свойствоsubnets
виртуальной сети должно выглядеть следующим образом:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Сохраните шаблон.
В файле main.bicep в Visual Studio Code удалите тег с именем
Owner
и его значение. После этого свойствоtags
виртуальной сети должно выглядеть следующим образом:tags: { 'CostCenter': '12345' }
В объекте
addressPrefixes
измените/16
на/15
. После этого свойствоaddressSpace
виртуальной сети должно выглядеть следующим образом:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Удалите подсеть с именем
subnet001
. Убедитесь, что вы удалили весь объект подсети целиком. После этого свойствоsubnets
виртуальной сети должно выглядеть следующим образом:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Сохраните шаблон.
Выполнение команды "что если" с измененным шаблоном
Используйте командлет 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
Вывод команды "что если" выглядит примерно следующим образом:
Обратите внимание, что результат закодирован цветом помимо префикса:
- сиреневый цвет и префикс ~ для изменений;
- зеленый цвет и префикс + для новых ресурсов;
- оранжевый цвет и префикс - для удаления.
Удаление ресурсов в шаблоне
Измените файл azuredeploy.json в Visual Studio Code и удалите все содержимое массива
resources
. Готовый шаблон должен выглядеть следующим образом:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Сохраните шаблон.
В файле main.bicep в Visual Studio Code удалите все содержимое файла, но не удаляйте сам файл.
Сохраните шаблон.
Развертывание в полном режиме с параметром подтверждения
Далее вы развернете пустой шаблон в существующей среде.
Предупреждение
В реальности эта процедура приведет к удалению всех ресурсов в облаке. Она представляет интерес как мысленный эксперимент. Использовать этот код следует с осторожностью. Как минимум используйте флаг -Confirm
, чтобы можно было отменить эту операцию, если вам не нравятся предлагаемые изменения.
Предупреждение
В реальности эта процедура приведет к удалению всех ресурсов в облаке. Она представляет интерес как мысленный эксперимент. Использовать этот код следует с осторожностью. Как минимум используйте флаг --confirm-with-what-if
, чтобы можно было отменить эту операцию, если вам не нравятся предлагаемые изменения.
Запустите командлет
New-AzResourceGroupDeployment
с флагом-Mode Complete
, чтобы выполнить развертывание в полном режиме:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
Выходные данные должны выглядеть примерно следующим образом:
Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.
Введите A, чтобы выбрать вариант [A] Yes to All (Да для всех). Это приведет к выполнению развертывания и очистке среды.
Запустите командлет
New-AzResourceGroupDeployment
с флагом-Mode Complete
, чтобы выполнить развертывание в полном режиме:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
Выходные данные должны выглядеть примерно следующим образом:
Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.
Введите A, чтобы выбрать вариант [A] Yes to All (Да для всех). Это приведет к выполнению развертывания и очистке среды.
Выполните командлет
az deployment group create
с флагом--mode Complete
, чтобы создать развертывание в полном режиме:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
Выходные данные должны выглядеть примерно следующим образом:
Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.
Введите Y, чтобы выбрать вариант Yes (Да). Это приведет к выполнению развертывания и очистке среды.
Выполните командлет
az deployment group create
с флагом--mode Complete
, чтобы создать развертывание в полном режиме:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
Выходные данные должны выглядеть примерно следующим образом:
Обратите внимание, что последняя строка выходных данных является подтверждением. Для продолжения вам предлагается выбрать y или n.
Введите Y, чтобы выбрать вариант Yes (Да). Это приведет к выполнению развертывания и очистке среды.
Проверка развертывания
Вернитесь в открытый браузер, который вы использовали ранее. Убедитесь, что виртуальная сеть теперь отсутствует, как показано на следующем снимке экрана: