Руководство по развертыванию расширений виртуальных машин с помощью шаблонов Resource Manager

Узнайте, как использовать расширения виртуальных машин Azure, чтобы выполнять задачи настройки и автоматизации после развертывания виртуальных машин Azure. Существует множество разных расширений виртуальных машин, которые можно использовать с виртуальными машинами Azure. При работе с этим учебником вы развернете расширение пользовательского скрипта из шаблона Azure Resource Manager для выполнения скрипта PowerShell на виртуальной машине Windows. Скрипт устанавливает веб-сервер на виртуальной машине.

В рамках этого руководства рассматриваются следующие задачи:

  • Подготовка скрипта PowerShell
  • Открытие шаблона быстрого запуска
  • Изменение шаблона
  • Развертывание шаблона

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

Предварительные требования

Для работы с этой статьей необходимо иметь следующее.

Подготовка скрипта PowerShell

Вы можете использовать встроенный скрипт PowerShell или файл скрипта. В этом руководстве описано, как использовать файл скрипта. Используется доступный на GitHub скрипт PowerShell со следующим содержимым:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Если вы решили опубликовать файл в своем расположении, обновите элемент fileUri в шаблоне, как описано в этом руководстве.

Открытие шаблона быстрого запуска

Шаблоны быстрого запуска Azure — это репозиторий для шаблонов ARM. Вместо создания шаблона с нуля можно найти пример шаблона и настроить его. Шаблон, используемый в этом руководстве, называется Deploy a simple Windows VM (Развертывание простой виртуальной машины Windows).

  1. В Visual Studio Code выберите Файл>Открыть файл.

  2. В поле Имя файла вставьте следующий URL-адрес:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Чтобы открыть файл, выберите Открыть. Шаблон определяет пять ресурсов:

  4. Сохраните файл под именем azuredeploy.json на локальный компьютер, выбрав Файл>Сохранить как.

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

Добавьте ресурс расширения виртуальной машины в существующий шаблон со следующим содержимым:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "apiVersion": "2021-04-01",
  "name": "[format('{0}/{1}', variables('vmName'), 'InstallWebServer')]",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[format('Microsoft.Compute/virtualMachines/{0}',variables('vmName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.7",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorial-vm-extension/installWebServer.ps1"
      ],
      "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File installWebServer.ps1"
    }
  }
}

Дополнительные сведения об определении этого ресурса см. в справочнике по расширению. Ниже приведены некоторые важные элементы.

  • name. Так как ресурс расширения является дочерним ресурсом объекта виртуальной машины, у имени должен быть префикс имени виртуальной машины. См. о настройке имени и типа дочернего ресурса.
  • dependsOn. Создайте ресурс расширения после создания виртуальной машины.
  • fileUris. Это расположение, в котором хранятся файлы скриптов. Если вы решили не использовать указанное расположение, необходимо обновить значения.
  • commandToExecute. Эта команда запускает скрипт.

Чтобы использовать встроенный скрипт, удалите fileUris и обновите commandToExecute следующим образом:

powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)

Этот встроенный скрипт также обновляет содержимое файла iisstart.html.

Кроме того, необходимо открыть HTTP-порт, чтобы вы могли получить доступ к веб-серверу.

  1. Найдите securityRules в шаблоне.

  2. Добавьте следующее правило рядом с default-allow-3389.

    {
      "name": "AllowHTTPInBound",
      "properties": {
        "priority": 1010,
        "access": "Allow",
        "direction": "Inbound",
        "destinationPortRange": "80",
        "protocol": "Tcp",
        "sourcePortRange": "*",
        "sourceAddressPrefix": "*",
        "destinationAddressPrefix": "*"
      }
    }
    

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

Дополнительные сведения о процедуре развертывания см. в разделе Развертывание шаблона статьи Руководство. Создание шаблонов Resource Manager с зависимыми ресурсами. Мы советуем использовать пароль, созданный для учетной записи администратора виртуальной машины. Дополнительные сведения см. в разделе Предварительные требования этой статьи.

В Cloud Shell выполните следующую команду, чтобы получить общедоступный IP-адрес виртуальной машины.

(Get-AzPublicIpAddress -ResourceGroupName $resourceGroupName).IpAddress

Вставьте URL-адрес в веб-браузер. Откроется страница приветствия IIS по умолчанию, которая будет выглядеть следующим образом:

Снимок экрана: страница приветствия служб IIS.

Очистка ресурсов

Если развернутые ресурсы Azure больше не нужны, вы можете их очистить. Для этого необходимо удалить группу ресурсов.

  1. На портале Azure на панели слева выберите Группа ресурсов.
  2. В поле Фильтровать по имени введите имя группы ресурсов.
  3. Выберите имя группы ресурсов. В группе ресурсов будет отображаться шесть ресурсов.
  4. В главном меню выберите Удалить группу ресурсов.

Дальнейшие действия

В этом руководстве вы развернули виртуальную машину и расширение виртуальной машины. Расширение установило веб-сервер IIS на виртуальной машине. Чтобы узнать, как использовать расширение Базы данных SQL Azure для импорта BACPAC-файла, перейдите к следующему руководству: