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

Завершено

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

Затем запускается базовый шаблон ARM, который подготавливает виртуальную машину Linux. После завершения развертывания убедитесь, что виртуальная машина работает и подключена.

Хотя работа с виртуальными машинами является распространенной задачей, вы обнаружите, что ресурс виртуальной машины требует наличия компонентов сети и хранилища, которые должны существовать до создания виртуальной машины. Вы увидите dependsOn , как конструкция позволяет задать порядок подготовки ресурсов.

Настройка

Здесь вы открываете Visual Studio Code, создаете сеанс PowerShell и подключаетесь к подписке Azure, предоставляемой бесплатной средой песочницы Azure.

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

Запуск PowerShell в Visual Studio Code

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

  2. Откройте окно терминала с помощью меню Терминал.

  3. Если в раскрывающемся списке с правой стороны окна терминала указано pwsh, значит, выбрана правильная оболочка для работы и вы можете перейти к следующему разделу.

    Screenshot of Terminal window, terminal type.

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

  5. Выберите pwsh.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. В терминале нажмите +, чтобы создать терминал с pwsh в качестве оболочки.

Вход в Azure

  1. Выполните команду Connect-AzAccount, чтобы войти в учетную запись.

    Connect-AzAccount
    

    Откроется окно браузера.

  2. Выберите учетную запись, которая использовалась для активации песочницы, и закройте окно браузера при появлении соответствующего запроса.

Задание активной подписки

  1. Выполните Get-AzSubscription, чтобы получить идентификатор подписки для среды песочницы.

    Get-AzSubscription
    

    Найдите Concierge Subscription и скопируйте второй столбец. Оно будет похоже на cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

  2. Выполните команду 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 и все ресурсы, необходимые для ее запуска.

  1. Выполните следующую команду curl, чтобы загрузить шаблон ARM:

    curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
    
  2. Выполните командлет ConvertTo-SecureString и назначьте результаты переменной PowerShell с именем $secure:

    $secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
    

    Теперь у вас есть зашифрованная версия пароля, которую можно передать далее в скрипт развертывания.

  3. Выполните команду 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. Для этого:

  1. Выполните команду Invoke-Expression, чтобы подключиться к виртуальной машине по протоколу SSH:

    Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
    

    При появлении запроса введите yes , чтобы продолжить подключение. Затем введите пароль администратора. insecurepassword123!

    Важно!

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

  2. В SSH-сеансе с виртуальной машиной выполните команду hostname, чтобы вывести имя узла виртуальной машины:

    hostname
    

    Вы увидите внутреннее имя узла виртуальной машины: vm1

    vm1
    
  3. Введите exit, чтобы выйти из SSH-сеанса.

    exit
    

Поздравляем, вы успешно развернули виртуальную машину Linux с помощью шаблона ARM. Виртуальная машина — это общий тип ресурса, содержащий зависимые ресурсы.

Настройка

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

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

Запуск оболочки в Visual Studio Code

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

  2. Откройте окно терминала с помощью меню Терминал.

  3. Если в раскрывающемся меню отображается предпочтительная оболочка (например, bash или zsh), можно перейти к следующему разделу.

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

  5. Выберите нужный тип оболочки.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Выберите + в окне терминала, чтобы создать новый терминал с выбранным типом оболочки.

Вход в Azure

  1. В терминале выполните команду az login:

    az login
    

    Откроется окно браузера.

  2. Выберите учетную запись, которая использовалась для активации песочницы, и закройте окно браузера при появлении соответствующего запроса.

Задание активной подписки

Выполните следующую команду 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 и все ресурсы, необходимые для ее запуска.

  1. Выполните следующую команду 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
    
  2. Выполните команду 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. Для этого:

  1. Выполните следующую команду 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
    
  2. Выполните следующую команду 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
    
  3. Выполните команду еще раз, на этот раз используя синтаксис $() для выполнения команды SSH:

    $(az deployment group show \
      --name azuredeploy \
      --query properties.outputs.sshCommand.value \
      --output tsv)
    

    При появлении запроса введите yes , чтобы продолжить подключение. Затем введите пароль администратора. insecurepassword123!

    Важно!

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

  4. В SSH-сеансе с виртуальной машиной выполните команду hostname, чтобы вывести имя узла виртуальной машины:

    hostname
    

    Вы увидите внутреннее имя узла виртуальной машины: vm1

    vm1
    
  5. Введите exit, чтобы выйти из SSH-сеанса.

    exit
    

Поздравляем, вы успешно развернули виртуальную машину Linux с помощью шаблона ARM. Виртуальная машина — это общий тип ресурса, содержащий зависимые ресурсы.