O código neste repositório contém os arquivos de script que usamos para criar as VMs gratuitas disponíveis em https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ O principal motivo para abrir o código-fonte deste projeto é para a comunidade para ajudar com os modelos das diferentes VMs e adicionar recursos ou configurações que possam ser úteis para eles.
Este script gera VMs para diversas plataformas (VirtualBox e Vagrant, Parallels, Hyper-V, VMWare), notifica via email o processo, carrega os arquivos em um Azure Storage para sua distribuição e cria um novo arquivo JSON para colocar no site. Algumas dessas etapas não farão sentido para você, então sinta-se à vontade para hackeá-las e desativá-las.
Existem alguns problemas conhecidos com os scripts, portanto, verifique a seção de problemas.
Atualmente, esse processo funciona apenas em máquinas com Windows 8.1.
Para uma instalação automática do software necessário você pode usar o script .scriptsappswinappinstaller.ps1
Ele usa Chocolatey para instalar os programas da lista anterior. Não é recomendado utilizar o script em máquinas que já possuam alguns dos programas instalados manualmente. O objetivo do script é economizar tempo na instalação em máquinas limpas.
Embora no Mac apenas o Packer e o Parallels sejam necessários, você pode instalá-los automaticamente usando o script .scriptsappsmacappinstaller.sh
. O script usa Homebrew para instalar os aplicativos. O Parallels exigirá além da instalação o registro de uma chave válida. Caso o packer não esteja sendo instalado corretamente, escreva no terminal brew install packer
para tentar novamente a instalação.
A seguir estão as instruções para configurar um ambiente quase totalmente automatizado. Durante o processo de criação da VM, às vezes o host precisa ser reinicializado ou algumas permissões são necessárias. Se você não fizer alguma intervenção manual, poderá pular algumas etapas como AutoLogon, etc.
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Descompacte os arquivos do Packer em C:packer
.
O construtor Hyper-V ISO no Packer 1.1.2 funciona bem no Windows 10 versão 1709.
Instalamos automaticamente as extensões de convidado, mas para fazer isso silenciosamente, a instalação precisa adicionar o certificado Oracle à lista de certificados confiáveis no sistema operacional convidado. Neste momento sugerimos que você siga o processo descrito neste guia. Você terá que colocar esse arquivo .cer
em scriptsfloppyguesttoolsoracle-cert.cer
. Num futuro próximo planejamos atualizar o processo para seguir as orientações do manual oficial na seção 4.2.1.3. Instalação autônoma .
Defina a política de execução digitando isto na janela do 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
A configuração de registro a seguir define o logon automático e também salva o nome de usuário e a senha padrão que serão usados para fazer login a cada reinicialização.
$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
A pasta bin
deve ter as seguintes pastas
AzCopy
com todos os binários e sem subpastasPutty
com plink.exe e putty.exePackerMerge
com a saída da compilação do projeto toolsPackerMerge
com Visual Studio (deve copiar a saída diretamente para a pasta correta quando a compilação for concluída)VMSGen
com a saída da compilação das toolsVMSGen
com Visual Studio (deve copiar a saída diretamente para a pasta correta quando a compilação for concluída) Você também precisará baixar o BgInfo, descompactá-lo e colocar o .exe em scriptsfloppybginfo
Lembre-se de instalar também o 7-Zip para Windows 64bits
Para ativar o hipervisor:
bcdedit /set hypervisorlaunchtype auto
Para desativar o hipervisor:
bcdedit /set hypervisorlaunchtype off
É recomendado que a primeira máquina que geramos não seja HyperV. Na primeira vez que geramos uma máquina virtual Hyper-V, o computador será reiniciado.
Clone este repositório para /Users/admin/dev.microsoftedge.com-vms/
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Ative o compartilhamento de arquivos da Apple
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
Ativar PME
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
Compartilhar pasta do repositório
sudo sharing -a /Users/admin/dev.microsoftedge.com-vms/
(Observação: esta etapa não é necessária se o script .scriptsappsmacappinstaller.sh
tiver sido executado.)
Descompacte os arquivos do Packer em /Users/packer
(Observação: esta etapa não é necessária se o script .scriptsappsmacappinstaller.sh
tiver sido executado.)
sudo nano /etc/paths
O sistema operacional Apple Mac OS X tem SSH instalado por padrão, mas o daemon SSH não está habilitado. Isso significa que o script vmgen não pode fazer login remotamente ou fazer cópias remotas até que você o habilite.
Para habilitá-lo, vá em “Preferências do Sistema”. Em “Internet e Rede” há um ícone “Compartilhamento”. Execute isso. Na lista que aparece, marque a opção “Login Remoto”.
Importante : uma vez habilitado o SSH no Mac, temos que conectar-se a ele manualmente pelo Putty SSH a partir do computador Windows preparado para iniciar o processo. Desta forma o Mac é reconhecido pelo Putty quando o processo é executado. Se não registrarmos o Mac como uma conexão aceita, a conexão SSH mostrará este erro no processo de geração 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.
Este processo utiliza ISOs, e mais precisamente a Avaliação Empresarial do Cliente. Você deve legalmente obter uma cópia da iso para o convidado que deseja construir e colocá-la diretamente na pasta scriptsiso
.
Se você deseja acelerar o processo de criação de VMs, você pode criar um ISO integrado e atualizado do Windows. Existem guias online como este que explicam o processo em detalhes.
Para executar o script, precisamos abrir qualquer console do Windows PowerShell com direitos de administrador e executar o script vmgen.ps1 com o parâmetro -Build.
.vmgen.ps1 -Build
Este script requer um arquivo de configuração chamado vmgen.json
localizado no mesmo diretório. Este arquivo é utilizado pela ferramenta de geração para saber quais Máquinas Virtuais devem ser geradas. O conteúdo do arquivo de configuração deve ter este formato:
{
"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 "
]
}
}
}
}
Build - Indica o número da compilação. Este identificador será usado para gerar o nome da pasta de saída.
OutputPath - Caminho para armazenar arquivos ZIP.
AzureUpload – Indica se os arquivos de saída serão carregados em uma conta de armazenamento do Azure.
AzureStorage – Contém o URL e a chave da conta de armazenamento do Azure para carregar os arquivos de saída.
Mac - Contém IP, usuário e senha SSH e um caminho compartilhado.
Mail - Configuração SMTP para enviar emails para as pessoas apropriadas
OsRenaming (opcional) - Indica os nomes finais desejados no JSON de saída para as versões do sistema operacional. Digamos que periodicamente executamos o processo para o Win10 e queremos no JSON de saída a versão específica do build "Win10 (x64) build 2345". Esta versão renomeada do JSON de saída é aquela enviada por correio. Se não desejar renomear, simplesmente remova esta seção.
VMS - Estrutura de objeto para definir as máquinas virtuais dev.microsoftedge.com a serem geradas. Os valores válidos para cada nível são os seguintes:
Para fazer upload dos arquivos gerados após uma compilação sem regenerar as VMs, precisamos executar o script vmgen.ps1 com os parâmetros -Build e -OnlyUpload.
.vmgen.ps1 -Build -OnlyUpload
Uma versão específica do JSON será gerada em OutputPath. Se quiser que seu resultado seja mesclado com outro arquivo, coloque-o na mesma pasta com o nome vms.json.
Renomeação automática : para renomear o JSON de saída automaticamente no processo, basta adicionar a seção OsRenaming
no arquivo vmgen. Quando o processo de geração for executado, uma cópia do JSON de saída com a renomeação será armazenada no caminho de saída, dentro da pasta de notificação. Esta versão é a que será enviada por email ao destinatário de email configurado.
Renomeação manual : se você deseja renomear o JSON de saída manualmente, você pode usar scriptsvmsrename.ps1
. Por exemplo, se quisermos alterar o valor Win10 usado no processo de geração para um nome explícito com construção e arquitetura:
.vmsrename.ps1 "Win10" "Win10 (x86) Build 6307"
O arquivo de entrada vms.json
deve estar na mesma pasta do script e o arquivo de saída será vms_renamed.json
.
Para gerar uma nova plataforma execute os seguintes passos:
floppy_files_OS.json
, OSx64.json
e urls_OSx64.json
de template-parts/templates para template-parts.url_OSx64.json
e insira as propriedades iso_url
e iso_checksum
corretas.OSx64.json
e altere as propriedades vm_name
e output_directory
para cada configuração do construtor.floppy_files_OS.json
. Você pode deixá-lo sem alterações.BuildTemplates.ps1
e as linhas a seguir para adicionar uma nova geração de modelo. $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."
Win7 | Win81 | Win10 | |
---|---|---|---|
MSEdge | - | - | X |
IE11 | X | X | - |
IE10 | X | - | - |
IE9 | X | - | - |
IE8 | X | - | - |
IE7 | - | - | - |
VPC | HiperV | Caixa Virtual | VMware | Paralelos | |
---|---|---|---|---|---|
Win7 | X | X | X | X | X |
Win81 | - | X | X | X | X |
Win10 | - | X | X | X | X |
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.