Назад | Перейти на главную страницу

Как я могу автоматизировать и выполнять команды после установки на виртуальных машинах Azure?

Мне нужно развернуть узлы Azure и настроить их в соответствии с заранее определенным сценарием после их загрузки.

Есть ли какой-либо пример, руководство или учебник о том, как изменить виртуальную машину Azure после развертывания экземпляра ... программно (с помощью PowerShell, C # или любым другим способом)?

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

Я не совсем уверен, где вы застряли или чего конкретно пытаетесь достичь, но я все равно попробую ...

Удаленного рабочего стола

Просто ради удовольствия, давайте начнем с удаленного доступа к виртуальной машине. Я развернул виртуальную машину с помощью портала Azure. Портал просит указать имя пользователя и пароль. Очевидно, что самый простой способ удаленного входа - использовать кнопку «Подключить» после выбора экземпляра виртуальной машины:

Оттуда вы можете ввести свои учетные данные, войти в виртуальную машину и открыть PowerShell.

Это плохой способ позаботиться об этом, но он самый простой.

Удаленное взаимодействие PowerShell

Запуск удаленного сеанса PowerShell может быть немного быстрее и требует меньше графического интерфейса. Для быстрого однострочника попробуйте следующее:

Enter-PSSession -ConnectionUri (Get-AzureWinRMUri) -SessionOption (New-PSSessionOption -SkipCACheck) -Credential (Get-Credential)

Вам будет предложено ввести имя службы (в моем случае - rtannerf) и учетные данные. Я решил проигнорировать самозаверяющий сертификат, а не импортировать его.

Вы также можете использовать Invoke-Command:

 Invoke-Command –ConnectionUri $uri –Credential $cred –ScriptBlock { "do u liek mah hat!?" | Out-File C:\hello.txt }

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

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

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

Если вам нужно более сильное прикосновение, чем предусмотрено Invoke-Command, вы можете изучить развертывание образов. Краткая версия: вы подготовите образ так же, как и любой другой образ Windows, загрузите его в учетную запись хранения в Azure и с помощью консоли управления добавьте VHD к своим изображениям. Есть краткое руководство Вот.

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

При развертывании ВМ вы можете указать пользовательские данные: До 64 КБ данных, которые вводятся в виртуальную машину во время подготовки (сведения об API Вот). Вы указываете данные в формате с кодировкой base-64 в <CustomData> элемент. Затем эти данные появятся на вашей виртуальной машине в:

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

В настоящее время это доступно только через REST API напрямую, но вскоре будет доступно и через кроссплатформенный интерфейс командной строки. Вы можете увидеть запрос на перенос для этой функции Вот.

Альтернативный способ, используйте Студия управления IaaS, он генерирует командную строку, поэтому вы можете подключиться через PowerShell одним щелчком мыши. (и сгенерируйте для него командные строки) Коммерческий, но, возможно, вам достаточно бесплатной пробной версии.