Виртуальная машина Windows Azure с заданием запуска

Есть ли способ добавить (параметризованную) задачу запуска к виртуальной машине Windows Azure через API? Мне нужно выполнить командлет после того, как машина была запущена, и код зависит от двух параметров, которые будут отличаться для каждой машины. Я знаю, что это может быть легко достигнуто для роли Web/Worker, но может ли это быть и для виртуальных машин?

3 ответа

Нет. В настоящее время такая функция не предоставляется из коробки.

Однако, учитывая, что вы все равно будете иметь дело с VM, вы можете создать собственный образ. Вы можете зарегистрировать "Startup Task" в разделе реестра RunOnce. И sysprep OS с этими настройками.

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

Внесение параметров в код для виртуальной машины не так просто для роли Web/Worker. Для чего угодно вы должны напрямую обращаться к API управления Azure. Единственными свойствами, которые вы можете получить из кода, запущенного на Azure VM, являются в основном обычные свойства ОС - то есть имя хоста, IP-адрес хоста. Вы даже не знаете свое имя облачного сервиса, а также свой виртуальный IP-адрес (это можно обнаружить через службы как **********.net или аналогичные). Поэтому мой подход заключался бы в том, чтобы поместить параметры в хранилище таблиц Azure и использовать имя Machine в качестве rowKey. Поэтому я могу хранить любые значения VM, основанные на имени виртуальной машины. И моя задача "Запуск" будет запрашивать хранилище таблиц, предоставляя мое имя хоста rowKey (и некоторый общий шаблон для Partition Key), поэтому он получает все необходимые настройки.


Для первых запусков виртуальной машины вы можете вводить задачу запуска через CustomData. Это работает как в Linux, так и в Windows VM. Вам просто нужно правильно base-64-кодировать ваш файл (будь то текстовый или двоичный) на основе документов REST API.

CustomData удаляется в файл в определенном месте, и у вас может быть код, который ищет этот файл, принимая некоторые действия для запуска:

  • Windows: %SYSTEMDRIVE%\AzureData\CustomData.bin
  • Linux: /var/lib/waagent/CustomData

Примечание. Это также будет добавлено в CLI (запрос на растяжение уже доступен - не уверен, что он находится в последней сборке.

EDIT Да, customdata теперь является частью Azure CLI, как параметр для azure vm create, поэтому вам не нужно возиться с кодировкой base-64 самостоятельно:


С помощью IaaS Management Studio вы можете установить сценарий запуска, который будет запускаться при загрузке вашей виртуальной машины. Таким образом, он активирует удаленную PowerShell и запускает ваш сценарий удаленно, когда он обнаруживает, что порт powershell открыт.

Я разработчик этого инструмента, но я действительно не понимаю, что вы подразумеваете под "параметризованным", другими словами, вы хотите, чтобы ваш скрипт имел доступ к информации виртуальной машины?

licensed under cc by-sa 3.0 with attribution.