Как бы я создал гибкий загрузочный скрипт EC2 для Windows 2008? - PullRequest
4 голосов
/ 30 января 2011

Если вы посмотрите на экосистему Linux (особенно на Ubuntu и Alestic EC2), то существует распространенная техника , где виртуальные машины предварительно настроены на EC2 user-data и использовать его в качестве загрузочного скрипта. Хорошая особенность этого подхода заключается в том, что вы можете написать загрузочный скрипт, который дополнительно подготовит ваш компьютер, позволяя вам избегать создания нового образа каждый раз, когда ваше программное обеспечение, работающее на компьютере, меняется.

Я хочу сделать то же самое для Windows, но, учитывая, что я парень из Mac и Linux, я немного растерялся, с чего начать. Мои требования:

  • Это должно работать на Windows Server 2008
  • Сценарий начальной загрузки должен запускаться при загрузке машины, прочитать файл пользовательских данных, потянув вниз содержимое http://169.254.169.254/1.0/user-data
  • После этого сценарию начальной загрузки необходимо запустить содержимое этого файла, как если бы это был сценарий
  • Сценарий, встроенный в пользовательские данные, должен выполняться таким образом, чтобы он имел доступ к среде рабочего стола (т. Е. Он мог запускать браузер и т. Д.).

Я не совсем уверен, как службы работают в Windows или мне нужно включить автоматический вход в систему, поэтому любой совет здесь будет оценен. Конечная цель - запустить программу на Java, которая запускает некоторое пользовательское программное обеспечение, которое, в свою очередь, запускает веб-браузер (IE, Firefox и т. Д.) И может делать снимки экрана.

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

Я ищу ответы на три конкретных вопроса, а также любые общие советы:

  1. Стоит ли фокусироваться на службе Windows или автоматическом входе + файл bat в папке «Автозагрузка»?
  2. Если я использую службу Windows, нужно ли что-нибудь особенное, чтобы обеспечить доступ к рабочему столу и / или снимки экрана?
  3. Рекомендуете ли вы какие-либо инструменты для общих команд Linux, такие как curl или wget? В прошлый раз, когда я использовал Windows, я часто использовал Cygwin, но есть ли что-то более подходящее для использования здесь?

Ответы [ 5 ]

6 голосов
/ 30 января 2011

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

Мы загружаем наши экземпляры Windows с помощью пользовательского AMI с уже установленной пользовательской службой установки Windows. Установщик загрузочной ленты считывает URL-адрес из пользовательских данных при запуске. URL указывает на ZIP-файл, хранящийся в S3. Затем установщик загружает, распаковывает и выполняет актуальный установщик приложения - в нашем случае простой файл CMD.

Эта настройка позволяет нам иметь один базовый AMI, а затем легко перекрывать более 15 различных конфигураций приложений (без необходимости перестраивать AMI). Если у вас есть только одна конфигурация приложения, это может быть излишним для вашей ситуации.

Единственная проблема, с которой мы столкнулись, заключалась в том, что наша служба установщика начала работать раньше - изменение режима запуска службы на «Автоматически отложено» решило эту проблему.

Мы написали наш установщик загрузочного ремешка на Java, запущенный через YAJSW , потому что нам это удобно. Если вам просто нужно несколько простых инструментов Unix, большинство из них доступны предварительно скомпилированными для Windows, например wget .

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

1 голос
/ 01 мая 2013

Если вы используете Elastic Beanstalks , вы можете использовать это:

Настройка программного обеспечения на экземплярах EC2 под управлением Windows

Используются YAML стандарты форматирования, например,

packages:
  msi:
    mysql: http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-6.6.5.msi/from/http://cdn.mysql.com/

или

sources:  
  "c:/myproject/myapp": http://s3.amazonaws.com/mybucket/myobject.zip
1 голос
/ 27 октября 2011

Если вы можете написать командный файл для настройки, вы можете запустить его при запуске виртуальной машины, выполнив следующее:

1. Run REGEDT32.EXE.
2. Modify the following value within HKEY_CURRENT_USER:

   Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ParseAutoexec

   1 = autoexec.bat is parsed
   0 = autoexec.bat is not parsed 

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

1 голос
/ 01 февраля 2011

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

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я работаю на RightScale.

Что касается захвата экрана CutyCapt - это простой инструмент, на который можно указать URL-адрес и сгенерировать изображение.

Unxutils - отличное решение для тех, кто ищет инструменты Unix для Windows. У него есть wget.exe, который вы ищете, однако использование Powershell для загрузки файлов также не так уж и плохо:

$wc = new-object system.net.webclient
$wc.DownloadFile("http://stackoverflow.com","test.html")
0 голосов
/ 22 февраля 2012

Я знаю, что уже немного поздно, чтобы помочь с оригинальным сообщением, но для тех, кто все еще читает это, одно решение - использовать проект http://cloudinitnet.codeplex.com/. Служба легко устанавливается с помощью сценария powershell и создает учетную запись локального администратора для использования во время работы.

Целью этого проекта было заменить проект Cloud-Init, используемый в Amazon Linux и Ubuntu.

...