Как бы я создал гибкий загрузочный скрипт EC2 для Windows 2008?
Если вы посмотрите на экосистему Linux (особенно на образы Ubuntu и Alestic EC2), то существует общая методика, в которой виртуальные машины предварительно настроены для просмотра пользовательских данных EC2 и использования их в качестве загрузочного скрипта. Хорошая особенность этого подхода заключается в том, что вы можете написать загрузочный скрипт, который дополнительно подготовит ваш компьютер, позволяя вам избегать создания нового образа каждый раз, когда ваше программное обеспечение, работающее на этом компьютере, изменяется.
Я хочу сделать то же самое для Windows, но, учитывая, что я парень из Mac и Linux, я немного растерялся, с чего начать. Мои требования:
- Это должно работать на Windows Server 2008
- Сценарий начальной загрузки должен запускаться при загрузке машины, прочитайте файл пользовательских данных, вытащив содержимое http://169.254.169.254/1.0/user-data
- Затем загрузочный скрипт должен запустить содержимое этого файла, как если бы это был скрипт
- Сценарий, встроенный в пользовательские данные, должен выполняться таким образом, чтобы он имел доступ к среде рабочего стола (т. Е. Он мог запускать браузер и т. Д.).
Я не совсем уверен, как службы работают в Windows или мне нужно включить автоматический вход в систему, поэтому любой совет здесь будет оценен. Конечная цель - запустить программу на Java, которая запускает некоторое пользовательское программное обеспечение, которое, в свою очередь, запускает веб-браузер (IE, Firefox и т. Д.) И может делать снимки экрана.
Часть скриншота интересна, потому что в прошлом, когда я пробовал это, единственным способом, которым я мог получить что-то кроме черного экрана, была загрузка UltraVNC или RealVNC в качестве службы, хотя я не знаю, почему это помогло.
Я ищу ответы на три конкретных вопроса, а также любые общие советы:
- Должен ли я сосредоточиться на службе Windows или файле автоматического входа + bat в папке "Автозагрузка"?
- Если я использую службу Windows, нужно ли что-то особенное, чтобы обеспечить доступ к рабочему столу и / или снимки экрана?
- Вы рекомендуете какие-либо инструменты для общих команд Linux, такие как curl или wget? В прошлый раз, когда я использовал Windows, я часто использовал Cygwin, но есть ли что-то более подходящее для использования здесь?
5 ответов
Я не пробовал автоматический вход в систему на экземплярах Windows в EC2, но вот документ поддержки о том, как включить его.
Мы загружаем наши экземпляры Windows, используя пользовательский AMI с уже установленной службой установки Windows. Установщик загрузочной ленты считывает URL-адрес из пользовательских данных при запуске. URL-адрес указывает на ZIP-файл, хранящийся в S3. Затем установщик загружает, распаковывает и выполняет актуальный установщик приложения - в нашем случае это простой файл CMD.
Эти настройки позволяют нам иметь один базовый AMI, а затем легко перекрывать более 15 различных конфигураций приложений (без необходимости перестраивать AMI). Если у вас есть только одна конфигурация приложения, это может быть излишним для вашей ситуации.
Единственная проблема, с которой мы столкнулись, заключалась в том, что наша служба установщика начала работать раньше - изменение режима запуска службы на "Автоматически отложено" решило эту проблему.
Мы написали наш установщик загрузочного ремешка на Java, запущенный через YAJSW, потому что нам это удобно. Если вам просто нужно несколько простых инструментов Unix, большинство из них доступны предварительно скомпилированными для Windows, например, wget.
Для чего-то совершенно другого, вы можете попробовать PsExec для настройки экземпляра после его загрузки.
Если вы можете написать пакетный файл для настройки, вы можете запустить его при запуске виртуальной машины, выполнив следующее:
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-сервера). Я действительно заинтересован в этом материале, и поэтому, если у вас есть вопросы, попробуйте задать мне.
Если вы используете 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
Вы можете попробовать использовать бесплатную учетную запись разработчика RightScale для создания простых скриптов Powershell и связать их с вашими экземплярами Windows для запуска во время загрузки. Панель управления RightScale решает именно те проблемы, которые вы пытаетесь решить выше.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я работаю на RightScale.
Что касается захвата экрана, CutyCapt - это простой инструмент, на который вы можете указать URL-адрес и сгенерировать изображение.
Unxutils - отличное решение для тех, кто ищет инструменты Unix для Windows. У него есть wget.exe, который вы ищете, однако использование Powershell для загрузки файлов также не так уж и плохо:
$wc = new-object system.net.webclient
$wc.DownloadFile("http://stackru.com","test.html")
Я знаю, что уже немного поздно, чтобы помочь с оригинальным сообщением, но для тех, кто все еще читает это, одно решение - использовать проект http://cloudinitnet.codeplex.com/. Служба легко устанавливается с помощью сценария powershell и создает учетную запись локального администратора для использования во время работы.
Целью этого проекта было заменить проект Cloud-Init, используемый в Amazon Linux и Ubuntu.