Использование пользовательских расширений скриптов в Microsoft Azure

Опубликовано: 3 Марта, 2023
Использование пользовательских расширений скриптов в Microsoft Azure

Microsoft Azure позволяет администратору легко запустить виртуальную машину, используя несколько вариантов: портал Microsoft Azure, где администратор должен ввести всю информацию для подготовки виртуальной машины; Шаблоны ARM, где файл можно использовать для заполнения всех необходимых входных данных; или с помощью PowerShell, где те же входные данные передаются через командную строку. Помимо перечисленных выше вариантов подготовки виртуальных машин, мы можем воспользоваться функцией расширений, с помощью которой администратор может добавить один дополнительный уровень автоматизации в процессе подготовки виртуальных машин. Эта функция имеет несколько встроенных расширений от Microsoft, и партнеры могут добавлять свое программное обеспечение при подготовке виртуальной машины. Некоторые из этих расширений могут предоставлять инфраструктуру как код (IaC) из известных решений, таких как Chef, Puppet и PowerShell DSC (Desired State Configuration), для настройки агентов, чтобы гарантировать, что вновь подготовленные виртуальные машины получат желаемый агент и из этого точки получения конфигурации на серверах. В некоторых случаях инфраструктура как код может оказаться слишком сложной задачей в зависимости от сценария, и в Microsoft Azure есть функция, которая может помочь автоматизировать некоторые процессы. Это расширение автоматизации называется пользовательскими расширениями скриптов, и в этой статье мы сосредоточимся на нем.
Существует также возможность использовать удаленный PowerShell для выполнения набора команд на любой виртуальной машине, но есть некоторые требования, такие как разрешения на подключение к виртуальной машине, брандмауэр и группы сетевой безопасности потребуют некоторых изменений. Расширения пользовательских сценариев позволяют администратору запускать сценарий на вновь подготовленной виртуальной машине, и таким образом мы можем настроить несколько начальных компонентов виртуальной машины, а в некоторых случаях может быть достаточно определить базовую или начальную конфигурацию для новых серверов.

Использование пользовательских расширений скрипта

Первым шагом является создание начального сценария PowerShell, который будет использоваться для расширений пользовательских сценариев. Наш сценарий начнется с малого и простого; мы сохраним две строчки ниже как VMExtension.ps1, а сам скрипт создаст ветку реестра и папку, и обе будут AppX. Сохраните скрипт локально, и мы загрузим его на следующем шаге.

New-Item -Path «HKLM:SoftwareAppX» Mkdir C:AppX

Во время предоставления новой виртуальной машины в третьем разделе есть опция с надписью Extensions. Нажмите на него и на новом лезвии нажмите Добавить расширение. Будет создан список, содержащий все текущие расширения. Выберите Расширение пользовательского скрипта. Отобразится новая колонка с кратким описанием расширения. Нажмите «Создать». Изображение 464

Следующим шагом является загрузка сценария PowerShell, созданного на первом этапе. Он будет скопирован во временное хранилище и выполнен на нашей виртуальной машине в рамках процесса подготовки.

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

При первом входе в виртуальную машину администратор может проверить папку AppX и записи реестра, определенные в пользовательском сценарии. Как видно на изображении ниже, обе записи были созданы скриптом.

При необходимости устранения неполадок администратор может проверить файлы журналов, созданные во время процесса, в этой локальной папке C:WindowsAzureLogsPluginsMicrosoft.Compute.CustomScriptExtension.

Установка программного обеспечения с пользовательскими расширениями сценариев

Мы выполнили процесс создания двух простых настроек (реестра и файловой системы) в предыдущем разделе, однако мы можем сделать гораздо больше, чтобы автоматизировать процесс подготовки новой виртуальной машины. Мы можем установить программное обеспечение, используя службу хранилища Azure, для хранения файлов, необходимых для пользовательских расширений сценариев. Мы можем начать с создания учетной записи хранения на портале Azure. Убедитесь, что тип хранилища BLOB-объектов.

После создания новой учетной записи хранения щелкните ее, затем щелкните Контейнеры, создайте новую (назовем ее сценариями) и определите доступ к большому двоичному объекту (только анонимный доступ на чтение для больших двоичных объектов) и нажмите ОК.

Нажмите «Обзор», расположенный слева, и нажмите «Открыть в проводнике» (если у вас нет Azure Storage Explorer, который является прекрасным инструментом для управления учетными записями хранения, программное обеспечение можно найти здесь, и оно доступно для Windows, Mac, и платформы Linux). Использование Azure Storage Explorer будет полезно для двух задач: сначала загрузите файл MSI, который мы хотим использовать в наших пользовательских расширениях скрипта (мы будем использовать GreenShot.exe, отличное бесплатное программное обеспечение для захвата экрана); во-вторых, мы выберем файл, который мы только что загрузили, и нажмем «Копировать URL». Нам понадобится этот URL-адрес для загрузки файла из нашего сценария PowerShell.

Теперь, когда у нас есть учетная запись хранения с общим доступом, мы можем обновить наш сценарий, чтобы скопировать файл из нашей учетной записи хранения и установить его в автоматическом режиме. Примечание. Мы упростили задачу, создав общедоступную учетную запись хранения, однако в корпоративной среде решение будет использовать конечные точки служб виртуальной сети для защиты трафика между виртуальными сетями/виртуальными машинами и учетной записью хранения, не раскрывая файлы в Интернете. Другой способ защитить его — использовать ключ учетной записи хранения для обеспечения безопасности доступа и отсутствия общего доступа к файлу. Сценарий простой и состоит всего из четырех строк кода, но он создает папку, раздел реестра, загружает файл и устанавливает его, и это дает некоторое представление о том, что можно сделать для автоматизации новых подготовленных виртуальных машин с помощью этой функции.

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

Полезно для нескольких сценариев

В этой статье мы рассмотрели несколько задач, которые можно выполнить с помощью функции расширений пользовательских сценариев, которая может быть полезна для нескольких сценариев для любого предприятия, использующего IaaS (инфраструктура как услуга) в Microsoft Azure. Расширения пользовательских сценариев работают с операционными системами Windows Server 2008 R2 и более поздних версий и требуют, чтобы виртуальная машина имела доступ к Интернету (для загрузки сценария). Мы можем снова выполнить те же расширения пользовательского скрипта, используя параметр -ForceReRun с командлетом Set-AzureRmVMCustomScript. Эта функция интегрируется с шаблонами ARM и может быть добавлена к вашим существующим шаблонам. Его также можно активировать с помощью Azure CLI, PowerShell, Azure Portal (параметр, который мы использовали в этой статье) и Azure VM Rest API.