Код в этом репозитории содержит файлы сценариев, которые мы используем для создания бесплатных виртуальных машин, доступных по адресу https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/. Основная причина открыть исходный код этого проекта — сообщество, чтобы помочь с шаблонами различных виртуальных машин и добавить функции или конфигурации, которые могут быть для них полезны.
Этот скрипт генерирует виртуальные машины для нескольких платформ (VirtualBox и Vagrant, Parallels, Hyper-V, VMWare), уведомляет по электронной почте о процессе, загружает файлы в хранилище Azure для их распространения и создает новый файл JSON для размещения на веб-сайте. Некоторые из этих шагов не будут иметь для вас смысла, поэтому не стесняйтесь взломать и отключить их.
Со сценариями существуют некоторые известные проблемы, поэтому обязательно проверьте раздел «Проблемы».
В настоящее время этот процесс работает только на компьютерах с Windows 8.1.
Для автоматической установки необходимого программного обеспечения вы можете использовать скрипт .scriptsappswinappinstaller.ps1
Он использует Chocolatey для установки программ из предыдущего списка. Не рекомендуется использовать скрипт на машинах, на которых часть программ уже установлена вручную. Цель скрипта - экономия времени при установке на чистые машины.
Хотя в Mac требуются только Packer и Parallels, их можно установить автоматически с помощью сценария .scriptsappsmacappinstaller.sh
. Скрипт использует Homebrew для установки приложений. Помимо установки Parallels потребуется регистрация действующего ключа. Если упаковщик устанавливается неправильно, напишите в терминале brew install packer
чтобы повторить установку.
Ниже приведены инструкции по настройке практически полностью автоматизированной среды. В процессе создания виртуальной машины иногда требуется перезагрузить хост или требуются некоторые разрешения. Если вы не вмешиваетесь вручную, вы можете пропустить некоторые шаги, такие как автоматический вход в систему и т. д.
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Разархивируйте файлы Packer в C:packer
.
Сборщик ISO Hyper-V в Packer 1.1.2 хорошо работает в Windows 10 версии 1709.
Мы автоматически устанавливаем гостевые расширения, но для этого необходимо добавить сертификат Oracle в список доверенных сертификатов гостевой ОС. Прямо сейчас мы предлагаем вам следовать процессу, описанному в этом руководстве. Вам нужно будет поместить этот файл .cer
в scriptsfloppyguesttoolsoracle-cert.cer
. В ближайшем будущем мы планируем обновить процесс, чтобы следовать указаниям официального руководства в разделе 4.2.1.3. Автоматическая установка .
Установите политику выполнения, введя это в окно PowerShell:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force
setx PATH "%PATH%;C:Packer;C:Program Files7-Zip"
New-ItemProperty -Path HKLM:SoftwareMicrosoftWindowsCurrentVersionpoliciessystem -Name EnableLUA -PropertyType DWord -Value 0 -Force
Следующий параметр реестра устанавливает автоматический вход в систему, а также сохраняет имя пользователя и пароль по умолчанию, которые будут использоваться для входа в систему при каждой перезагрузке.
$RegPath = "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon"
Set-ItemProperty $RegPath "AutoAdminLogon" -Value "1" -type String
Set-ItemProperty $RegPath "DefaultUsername" -Value "DomainNameAdministrator" -type String
Set-ItemProperty $RegPath "DefaultPassword" -Value "Password" -type String
В папке bin
должны быть следующие папки
AzCopy
со всеми двоичными файлами и без подпапок.Putty
с plink.exe и putty.exePackerMerge
с выводом компиляции toolsPackerMerge
с помощью Visual Studio (он должен скопировать вывод непосредственно в нужную папку после завершения сборки)VMSGen
с выводом компиляции toolsVMSGen
с помощью Visual Studio (он должен скопировать вывод непосредственно в нужную папку после завершения сборки) Вам также потребуется скачать BgInfo, разархивировать его и поместить .exe в scriptsfloppybginfo
Не забудьте также установить 7-Zip для 64-битной версии Windows.
Чтобы включить гипервизор:
bcdedit /set hypervisorlaunchtype auto
Чтобы отключить гипервизор:
bcdedit /set hypervisorlaunchtype off
Рекомендуется, чтобы первая сгенерированная нами машина не была HyperV. Когда мы впервые создаем виртуальную машину Hyper-V, компьютер перезагрузится.
Клонируйте этот репозиторий в /Users/admin/dev.microsoftedge.com-vms/.
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Включите общий доступ к файлам Apple
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
Активировать SMB
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
Поделиться папкой репозитория
sudo sharing -a /Users/admin/dev.microsoftedge.com-vms/
(Примечание: этот шаг не требуется, если был выполнен сценарий .scriptsappsmacappinstaller.sh
.)
Разархивируйте файлы Packer в /Users/packer.
(Примечание: этот шаг не требуется, если был выполнен сценарий .scriptsappsmacappinstaller.sh
.)
sudo nano /etc/paths
В операционной системе Apple Mac OS X по умолчанию установлен SSH, но демон SSH не включен. Это означает, что сценарий vmgen не сможет удаленно входить в систему или выполнять удаленное копирование, пока вы его не включите.
Чтобы включить его, перейдите в «Системные настройки». В разделе «Интернет и сети» есть значок «Общий доступ». Запустите это. В появившемся списке отметьте опцию «Удаленный вход».
Важно : как только SSH включен на Mac, нам придется подключиться к нему вручную с помощью Putty SSH с компьютера Windows, подготовленного для запуска процесса. Таким образом, Putty распознает Mac при выполнении процесса. Если мы не зарегистрируем Mac как принятое соединение, SSH-соединение отобразит эту ошибку в процессе генерации The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's rsa2 key finger (...) Connection abandoned.
В этом процессе используются ISO, а точнее, оценка предприятия клиента. Вы должны легально получить копию ISO для гостя, которого хотите собрать, и поместить его прямо в папку scriptsiso
.
Если вы хотите ускорить процесс создания виртуальных машин, вы можете создать интегрированный современный ISO-образ Windows. Существуют онлайн-руководства, подобные этому, в которых подробно объясняется этот процесс.
Для того чтобы запустить скрипт нам нужно открыть любую консоль Windows PowerShell с правами Администратора и запустить скрипт vmgen.ps1 с параметром -Build.
.vmgen.ps1 -Build
Для этого сценария требуется файл конфигурации vmgen.json
расположенный в том же каталоге. Этот файл используется инструментом генерации, чтобы узнать, какие виртуальные машины необходимо создать. Содержимое файла конфигурации должно иметь следующий формат:
{
"Build" : " 20150901 " ,
"OutputPath" : " D: \ vms " ,
"AzureUpload" : false ,
"GenerateMultipart" : true ,
"AzureStorage" : {
"Url" : " https://yourblostorage.blob.core.windows.net/vms " ,
"Key" : " xxxxxxxxxxx... "
},
"Mac" : {
"IP" : " 192.168.0.2 " ,
"SSH_User" : " admin " ,
"SSH_Password" : " password " ,
"NetworkPath" : " \\ MAC \ microsoftedge-vms " ,
"RepoPath" : " /Users/admin/dev.microsoftedge.com-vms "
},
"Mail" : {
"SMTP" : " smtp.office365.com " ,
"From" : " [email protected] " ,
"To" : " [email protected] " ,
"User" : " [email protected] " ,
"Password" : " "
},
"OsRenaming" : {
"Win10" : " Win10 (x64) Build xxxx " ,
"Win81" : " Win81 (x86) Build yyyy "
},
"VMS" : {
"Windows" : {
"HyperV" : {
"MSEdge" : [
" Win10 "
],
"IE11" : [
" Win81 " , " Win7 "
],
"IE10" : [
" Win7 "
]
},
"VirtualBox" : {
"IE11" : [
" Win81 " , " Win7 "
],
"IE10" : [
" Win7 "
]
}
},
"Mac" : {
"Parallels" : {
"IE11" : [
" Win81 " , " Win7 "
],
"IE10" : [
" Win7 "
]
}
}
}
}
Сборка — указывает номер сборки. Этот идентификатор будет использоваться для создания имени выходной папки.
OutputPath — путь для хранения ZIP-файлов.
AzureUpload — указывает, будут ли выходные файлы отправляться в учетную запись хранения Azure.
AzureStorage — содержит URL-адрес и ключ учетной записи хранения Azure для загрузки выходных файлов.
Mac — содержит IP-адрес, пользователя и пароль SSH, а также общий путь.
Почта — конфигурация SMTP для отправки электронных писем соответствующим людям.
OsRenaming (необязательно) — указывает окончательные имена, необходимые в выходном JSON для версий ОС. Допустим, мы периодически выполняем процесс для Win10 и хотим, чтобы в выходном JSON была конкретная версия сборки «Win10 (x64) build 2345». Эта переименованная версия выходного JSON отправляется по почте. Если переименование нежелательно, просто удалите этот раздел.
VMS — структура объекта для настройки создания виртуальных машин dev.microsoftedge.com. Допустимые значения для каждого уровня следующие:
Чтобы загрузить сгенерированные файлы после сборки без регенерации ВМ, нам нужно запустить скрипт vmgen.ps1 с параметром -Build и -OnlyUpload.
.vmgen.ps1 -Build -OnlyUpload
Определенная версия JSON будет создана в OutputPath. Если вы хотите, чтобы ваш результат был объединен с другим файлом, поместите его в ту же папку с именем vms.json.
Автоматическое переименование : чтобы автоматически переименовать выходной JSON в процессе, просто добавьте раздел OsRenaming
в файл vmgen. Когда процесс генерации будет выполнен, копия выходного JSON с переименованием будет сохранена в пути вывода внутри папки уведомлений. Эта версия будет отправлена по электронной почте настроенному получателю почты.
Переименование вручную : если вы хотите переименовать выходной JSON вручную, вы можете использовать scriptsvmsrename.ps1
. Например, если мы хотим изменить значение Win10, используемое в процессе генерации, на явное имя с указанием сборки и архитектуры:
.vmsrename.ps1 "Win10" "Win10 (x86) Build 6307"
Входной файл vms.json
должен находиться в той же папке, что и скрипт, а выходной файл будет иметь имя vms_renamed.json
.
Чтобы создать новую платформу, выполните следующие шаги:
floppy_files_OS.json
, OSx64.json
и urls_OSx64.json
из частей шаблона/шаблонов в части шаблона.url_OSx64.json
и введите правильные свойства iso_url
и iso_checksum
.OSx64.json
и измените свойства vm_name
и output_directory
для каждой конфигурации построителя.floppy_files_OS.json
не обязательно. Вы можете оставить его без изменений.BuildTemplates.ps1
и следующие строки, чтобы добавить новое поколение шаблонов. $template = "MSEdge-Win10TH2" ..binPackerMergePackerMerge -i:".template-partsuser.json,.template-partsurls_OSx64.json,.template-partsOSx64.json,.template-partsfloppy_files_common.json,.template-partsfloppy_files_OS.json,.template-partsprovisioner_common.json,.template-partspp-vagrant.json" -o:".template-output$template.json" Write-Verbose "$template.json created."
Вин7 | Вин81 | Вин10 | |
---|---|---|---|
MSEdge | - | - | Х |
IE11 | Х | Х | - |
IE10 | Х | - | - |
IE9 | Х | - | - |
IE8 | Х | - | - |
IE7 | - | - | - |
ВПК | ГиперВ | ВБокс | VMware | Параллели | |
---|---|---|---|---|---|
Вин7 | Х | Х | Х | Х | Х |
Вин81 | - | Х | Х | Х | Х |
Вин10 | - | Х | Х | Х | Х |
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.