Упражнение. Управление порядком развертывания ресурсов
В этой части начинается выполнение нескольких основных задач настройки. В Visual Studio Code вы подключаете сеанс терминала к подписке Azure, предоставляемой бесплатной средой песочницы Azure. Это позволит выполнять проверку подлинности команд в Azure.
Затем запускается базовый шаблон ARM, который подготавливает виртуальную машину Linux. После завершения развертывания убедитесь, что виртуальная машина работает и подключена.
Хотя работа с виртуальными машинами является распространенной задачей, вы обнаружите, что ресурс виртуальной машины требует наличия компонентов сети и хранилища, которые должны существовать до создания виртуальной машины. Вы увидите dependsOn
, как конструкция позволяет задать порядок подготовки ресурсов.
Настройка
Здесь вы открываете Visual Studio Code, создаете сеанс PowerShell и подключаетесь к подписке Azure, предоставляемой бесплатной средой песочницы Azure.
Эти задачи по настройке необходимо выполнить один раз во время прохождения этого модуля. Вы можете вернуться к этим действиям, если в дальнейших упражнениях вы выполните выход или произойдет отключение.
Запуск PowerShell в Visual Studio Code
Откройте Visual Studio Code.
Откройте окно терминала с помощью меню Терминал.
Если в раскрывающемся списке с правой стороны окна терминала указано pwsh, значит, выбрана правильная оболочка для работы и вы можете перейти к следующему разделу.
В противном случае щелкните этот раскрывающийся список и выберите пункт Выбрать оболочку по умолчанию.
Выберите pwsh.
В терминале нажмите +, чтобы создать терминал с pwsh в качестве оболочки.
Вход в Azure
Выполните команду
Connect-AzAccount
, чтобы войти в учетную запись.Connect-AzAccount
Откроется окно браузера.
Выберите учетную запись, которая использовалась для активации песочницы, и закройте окно браузера при появлении соответствующего запроса.
Задание активной подписки
Выполните
Get-AzSubscription
, чтобы получить идентификатор подписки для среды песочницы.Get-AzSubscription
Найдите
Concierge Subscription
и скопируйте второй столбец. Оно будет похоже на cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Выполните команду
Set-AzContext
, чтобы изменить активную подписку на подписку Concierge.Примечание.
Обязательно замените строку {ИД подписки} идентификатором подписки Concierge, полученным в результате выполнения последней команды.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Задание группы ресурсов по умолчанию
Обычно при выполнении команды Azure CLI необходимо указать группу ресурсов.
Песочница предоставляет группу ресурсов по умолчанию. Чтобы упростить запуск команд Azure CLI, укажите группу ресурсов по умолчанию.
Выполните командлет Set-AzDefault
, чтобы задать группу ресурсов по умолчанию.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Примечание.
Обычно при использовании PowerShell для развертывания ресурсов в Azure необходимо указать группу ресурсов. Чтобы обойти это требование, задайте контекст развертывания, используя Set-AzDefault
.
Типичное развертывание виртуальной машины
При развертывании виртуальной машины следует иметь в виду, что для работы виртуальной машины вместе с ней необходимо развернуть несколько ресурсов.
Ниже приведен краткий обзор типов ресурсов, которые обычно требуется развернуть вместе с виртуальной машиной.
- Microsoft.Storage/storageAccounts. Учетная запись хранения предоставляет место на диске для операционной системы и файлов.
- Microsoft.Network/publicIPAddresses. Общедоступный IP-адрес позволяет подключаться к виртуальной машине из Интернета.
- Microsoft.Network/networkSecurityGroups. Группа безопасности сети содержит правила обработки входящего и исходящего трафика в виртуальной сети.
- Microsoft.Network/virtualNetworks. Виртуальная машина должна быть размещена в виртуальной сети. Для этого ресурса требуется развернуть группу безопасности сети.
- Microsoft.Network/networkInterfaces. Этот ресурс зависит от двух других ресурсов: общедоступного IP-адреса и виртуальной сети.
- Microsoft.Compute/virtualMachines. Виртуальная машина — это основной развертываемый ресурс. Он зависит от двух разных ресурсов: учетной записи хранения и сетевых интерфейсов.
Развертывание виртуальной машины Linux
Здесь из предоставляемого репозитория GitHub загружается шаблон ARM. Шаблон подготавливает виртуальную машину Linux и все ресурсы, необходимые для ее запуска.
Выполните следующую команду
curl
, чтобы загрузить шаблон ARM:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Выполните командлет
ConvertTo-SecureString
и назначьте результаты переменной PowerShell с именем$secure
:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
Теперь у вас есть зашифрованная версия пароля, которую можно передать далее в скрипт развертывания.
Выполните команду
New-AzResourceGroupDeployment
, чтобы развернуть шаблон:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
Выполнение команды может занять несколько минут. Во время выполнения команды вы можете изучить шаблон ARM в отдельной вкладке браузера.
Обратите внимание на зависимости ресурсов, выполнив поиск ключа
dependsOn
. Например, ресурс виртуальной машины зависит от сетевого интерфейса:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Проверка развертывания
Убедитесь, что виртуальная машина подготовлена и к ней можно подключиться по протоколу SSH. Для этого:
Выполните команду
Invoke-Expression
, чтобы подключиться к виртуальной машине по протоколу SSH:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
При появлении запроса введите
yes
, чтобы продолжить подключение. Затем введите пароль администратора.insecurepassword123!
Внимание
На практике пароли следует хранить в надежном месте. Также можно использовать проверку подлинности с открытым ключом, которая обычно безопаснее, чем использование паролей.
В SSH-сеансе с виртуальной машиной выполните команду
hostname
, чтобы вывести имя узла виртуальной машины:hostname
Вы увидите внутреннее имя узла виртуальной машины:
vm1
vm1
Введите
exit
, чтобы выйти из SSH-сеанса.exit
Поздравляем, вы успешно развернули виртуальную машину Linux с помощью шаблона ARM. Виртуальная машина — это общий тип ресурса, содержащий зависимые ресурсы.
Настройка
Здесь вы открываете Visual Studio Code, создаете сеанс терминала и подключаетесь к подписке Azure, предоставляемой бесплатной средой песочницы Azure.
Эти задачи по настройке необходимо выполнить один раз во время прохождения этого модуля. Вы можете вернуться к этим действиям, если в дальнейших упражнениях вы выполните выход или произойдет отключение.
Запуск оболочки в Visual Studio Code
Откройте Visual Studio Code.
Откройте окно терминала с помощью меню Терминал.
Если в раскрывающемся меню отображается предпочтительная оболочка (например, bash или zsh), можно перейти к следующему разделу.
В противном случае щелкните этот раскрывающийся список и выберите пункт Выбрать оболочку по умолчанию.
Выберите нужный тип оболочки.
Выберите + в окне терминала, чтобы создать новый терминал с выбранным типом оболочки.
Вход в Azure
В терминале выполните команду
az login
:az login
Откроется окно браузера.
Выберите учетную запись, которая использовалась для активации песочницы, и закройте окно браузера при появлении соответствующего запроса.
Задание активной подписки
Выполните следующую команду az account set
, чтобы задать среду песочницы Azure в качестве действующей подписки:
az account set -s "Concierge Subscription"
Примечание.
Если команда завершается ошибкой, выполните az account list --refresh --all
, а затем повторно запустите команду az account set
.
Установка группы ресурсов по умолчанию
Обычно при выполнении команды Azure CLI необходимо указать группу ресурсов.
Песочница предоставляет группу ресурсов по умолчанию. Чтобы упростить запуск команд Azure CLI, укажите группу ресурсов по умолчанию.
Выполните следующую команду az configure
, чтобы задать группу ресурсов по умолчанию:
az configure --defaults group=<rgn>resource group name</rgn>
Типичное развертывание виртуальной машины
При развертывании виртуальной машины следует иметь в виду, что для работы виртуальной машины вместе с ней необходимо развернуть несколько ресурсов.
Ниже приведен краткий обзор типов ресурсов, которые обычно требуется развернуть вместе с виртуальной машиной.
- Microsoft.Storage/storageAccounts. Учетная запись хранения предоставляет место на диске для операционной системы и файлов.
- Microsoft.Network/publicIPAddresses. Общедоступный IP-адрес позволяет подключаться к виртуальной машине из Интернета.
- Microsoft.Network/networkSecurityGroups. Группа безопасности сети содержит правила обработки входящего и исходящего трафика в виртуальной сети.
- Microsoft.Network/virtualNetworks. Виртуальная машина должна быть размещена в виртуальной сети. Для этого ресурса требуется развернуть группу безопасности сети.
- Microsoft.Network/networkInterfaces. Этот ресурс зависит от двух других ресурсов: общедоступного IP-адреса и виртуальной сети.
- Microsoft.Compute/virtualMachines. Виртуальная машина — это основной развертываемый ресурс. Он зависит от двух разных ресурсов: учетной записи хранения и сетевых интерфейсов.
Развертывание виртуальной машины Linux
Здесь из предоставляемого репозитория GitHub вы скачиваете шаблон Azure Resource Manager (ARM). Шаблон подготавливает виртуальную машину Linux и все ресурсы, необходимые для ее запуска.
Выполните следующую команду
wget
, чтобы загрузить шаблон ARM:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Если
wget
не установлен, можно выполнить следующую командуcurl
:curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Выполните команду
az deployment group create
, чтобы развернуть шаблон:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
Выполнение команды может занять несколько минут. Во время выполнения команды вы можете изучить шаблон ARM в отдельной вкладке браузера.
Обратите внимание на зависимости ресурсов, выполнив поиск ключа
dependsOn
. Например, ресурс виртуальной машины зависит от сетевого интерфейса:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Проверка развертывания
Убедитесь, что виртуальная машина подготовлена и к ней можно подключиться по протоколу SSH. Для этого:
Выполните следующую команду
az deployment group list
, чтобы вывести список групп развертывания в вашей подписке:az deployment group list --output table
Вы увидите одну группу развертывания с именем azuredeploy:
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Выполните следующую команду
az deployment group show
, чтобы отобразить команду SSH, которую можно использовать для подключения к виртуальной машине:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
В шаблоне ARM это свойство определяется в разделе
output
. Приведем пример:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Выполните команду еще раз, на этот раз используя синтаксис
$()
для выполнения команды SSH:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
При появлении запроса введите
yes
, чтобы продолжить подключение. Затем введите пароль администратора.insecurepassword123!
Внимание
На практике пароли следует хранить в надежном месте. Также можно использовать проверку подлинности с открытым ключом, которая обычно безопаснее, чем использование паролей.
В SSH-сеансе с виртуальной машиной выполните команду
hostname
, чтобы вывести имя узла виртуальной машины:hostname
Вы увидите внутреннее имя узла виртуальной машины:
vm1
vm1
Введите
exit
, чтобы выйти из SSH-сеанса.exit
Поздравляем, вы успешно развернули виртуальную машину Linux с помощью шаблона ARM. Виртуальная машина — это общий тип ресурса, содержащий зависимые ресурсы.