El código de este repositorio contiene los archivos de script que utilizamos para crear las máquinas virtuales gratuitas disponibles en https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ La razón principal para abrir este proyecto es de código abierto. la comunidad para ayudar con las plantillas de las diferentes VM y agregar características o configuraciones que puedan serles útiles.
Este script genera VMs para varias plataformas (VirtualBox y Vagrant, Parallels, Hyper-V, VMWare), notifica vía email del proceso, sube los archivos a un Azure Storage para su distribución y crea un nuevo archivo JSON para poner en el sitio web. Algunos de estos pasos no tendrán sentido para usted, así que siéntase libre de modificarlos y desactivarlos.
Hay algunos problemas conocidos con los scripts, así que asegúrese de consultar la sección de problemas.
Actualmente, este proceso sólo funciona en máquinas con Windows 8.1.
Para una instalación automática del software requerido, puede utilizar el script .scriptsappswinappinstaller.ps1
Utiliza Chocolatey para instalar los programas de la lista anterior. No se recomienda utilizar el script en máquinas que ya tengan algunos de los programas instalados manualmente. El objetivo del script es ahorrar tiempo en la instalación en máquinas limpias.
Aunque en Mac solo se requieren Packer y Parallels, puedes instalarlos automáticamente usando el script .scriptsappsmacappinstaller.sh
. El script utiliza Homebrew para instalar las aplicaciones. Parallels requerirá además de la instalación el registro de una clave válida. En caso de que Packer no se esté instalando correctamente, escriba en el terminal brew install packer
para volver a intentar la instalación.
Las siguientes son las instrucciones para configurar un entorno casi completamente automatizado. Durante el proceso de creación de la VM, a veces es necesario reiniciar el host o se requieren algunos permisos. Si no realiza alguna intervención manual, puede omitir algunos pasos como AutoLogon, etc.
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Descomprima los archivos de Packer en C:packer
.
El generador ISO de Hyper-V en Packer 1.1.2 funciona bien en Windows 10 versión 1709.
Instalamos automáticamente las Extensiones de Invitado, pero para hacerlo de forma silenciosa, la instalación debe agregar el certificado de Oracle a la lista de certificados confiables en el sistema operativo invitado. Ahora mismo te sugerimos que sigas el proceso descrito en esta guía. Tendrá que colocar ese archivo .cer
en scriptsfloppyguesttoolsoracle-cert.cer
. En un futuro próximo planeamos actualizar el proceso para seguir las instrucciones del manual oficial en la sección 4.2.1.3. Instalación desatendida .
Establezca la política de ejecución escribiendo esto en su ventana de 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
La siguiente configuración de registro establece el inicio de sesión automático y también guarda el nombre de usuario y la contraseña predeterminados que se utilizarán para iniciar sesión en cada reinicio.
$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
La carpeta bin
debe tener las siguientes carpetas
AzCopy
con todos los binarios y sin subcarpetasPutty
con plink.exe y putty.exePackerMerge
con el resultado de compilar las toolsPackerMerge
con Visual Studio (debe copiar el resultado directamente a la carpeta correcta cuando finalice la compilación)VMSGen
con el resultado de compilar las toolsVMSGen
con Visual Studio (debe copiar el resultado directamente a la carpeta correcta cuando finalice la compilación) También necesitarás descargar BgInfo, descomprimirlo y poner el .exe en scriptsfloppybginfo
Recuerda instalar también 7-Zip para Windows 64bits
Para habilitar el hipervisor:
bcdedit /set hypervisorlaunchtype auto
Para deshabilitar el hipervisor:
bcdedit /set hypervisorlaunchtype off
Se recomienda que la primera máquina que generemos no sea HyperV. La primera vez que generamos una máquina virtual Hyper-V la computadora se reiniciará.
Clona este repositorio en /Users/admin/dev.microsoftedge.com-vms/
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Activar el uso compartido de archivos de Apple
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
Activar PYME
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
Compartir carpeta del repositorio
sudo sharing -a /Users/admin/dev.microsoftedge.com-vms/
(Nota: este paso no es necesario si se ha ejecutado el script .scriptsappsmacappinstaller.sh
).
Descomprima los archivos de Packer en /Users/packer
(Nota: este paso no es necesario si se ha ejecutado el script .scriptsappsmacappinstaller.sh
).
sudo nano /etc/paths
El sistema operativo Apple Mac OS X tiene SSH instalado de forma predeterminada, pero el demonio SSH no está habilitado. Esto significa que el script vmgen no puede iniciar sesión de forma remota ni realizar copias remotas hasta que lo habilite.
Para habilitarlo, vaya a "Preferencias del Sistema". En "Internet y redes" hay un icono de "Compartir". Ejecute eso. En la lista que aparece, marque la opción "Inicio de sesión remoto".
Importante : una vez habilitado SSH en el Mac, tenemos que conectarnos manualmente mediante Putty SSH desde el ordenador Windows preparado para iniciar el proceso. De esta manera, Putty reconoce la Mac cuando se ejecuta el proceso. Si no registramos el Mac como conexión aceptada, la conexión SSH mostrará este error en el proceso de generación 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 proceso utiliza ISO y, más precisamente, la Evaluación empresarial del cliente. Deberías obtener legalmente una copia de la ISO para el invitado que deseas crear y colocarla directamente en la carpeta scriptsiso
.
Si desea acelerar el proceso de creación de máquinas virtuales, puede crear una ISO de Windows integrada y actualizada. Existen guías online como ésta que explican el proceso detalladamente.
Para ejecutar el script, debemos abrir cualquier consola de Windows PowerShell con derechos de administrador y ejecutar el script vmgen.ps1 con el parámetro -Build.
.vmgen.ps1 -Build
Este script requiere un archivo de configuración llamado vmgen.json
ubicado en el mismo directorio. Este archivo es utilizado por la herramienta de generación para saber qué Máquinas Virtuales se deben generar. El contenido del archivo de configuración debe tener 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 "
]
}
}
}
}
Compilación: indica el número de compilación. Este identificador se utilizará para generar el nombre de la carpeta de salida.
OutputPath: ruta para almacenar archivos ZIP.
AzureUpload: indica si los archivos de salida se cargarán en una cuenta de almacenamiento de Azure.
AzureStorage: contiene la URL y la clave de la cuenta de Azure Storage para cargar los archivos de salida.
Mac: contiene IP, usuario y contraseña SSH y una ruta compartida.
Correo: configuración SMTP para enviar correos electrónicos a las personas adecuadas
OsRenaming (opcional): indica los nombres finales deseados en el JSON de salida para las versiones del sistema operativo. Digamos que periódicamente ejecutamos el proceso para Win10 y queremos en el JSON de salida la versión de compilación específica "Win10 (x64) build 2345". Esta versión renombrada del JSON de salida es la que se envía por correo. Si no desea cambiar el nombre, simplemente elimine esta sección.
VMS: estructura de objeto para configurar las máquinas virtuales dev.microsoftedge.com que se generarán. Los valores válidos para cada nivel son los siguientes:
Para cargar los archivos generados después de una compilación sin regenerar las VM, necesitamos ejecutar el script vmgen.ps1 con el parámetro -Build y -OnlyUpload.
.vmgen.ps1 -Build -OnlyUpload
Se generará una versión JSON específica en OutputPath. Si desea que su resultado se combine con otro archivo, colóquelo en la misma carpeta con el nombre vms.json.
Cambio de nombre automático : para cambiar el nombre del JSON de salida automáticamente en el proceso, simplemente agregue la sección OsRenaming
en el archivo vmgen. Cuando se ejecuta el proceso de generación, se almacenará una copia del JSON de salida con el cambio de nombre en la ruta de salida, dentro de la carpeta de notificaciones. Esta versión es la que se enviará por correo electrónico al receptor de correo configurado.
Cambio de nombre manual : si desea cambiar el nombre del JSON de salida manualmente, puede utilizar scriptsvmsrename.ps1
. Por ejemplo, si queremos cambiar el valor de Win10 utilizado en el proceso de generación por un nombre explícito con compilación y arquitectura:
.vmsrename.ps1 "Win10" "Win10 (x86) Build 6307"
El archivo de entrada vms.json
debe estar en la misma carpeta que el script y el archivo de salida será vms_renamed.json
.
Para generar una nueva plataforma realice los siguientes pasos:
floppy_files_OS.json
, OSx64.json
y urls_OSx64.json
de template-parts/templates a template-parts.url_OSx64.json
e ingrese las propiedades iso_url
e iso_checksum
correctas.OSx64.json
y cambie las propiedades vm_name
y output_directory
para cada configuración del generador.floppy_files_OS.json
. Puedes dejarlo sin cambios.BuildTemplates.ps1
y las siguientes líneas para agregar una nueva generación de plantilla. $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 | - | - | incógnita |
IE11 | incógnita | incógnita | - |
IE10 | incógnita | - | - |
IE9 | incógnita | - | - |
IE8 | incógnita | - | - |
IE7 | - | - | - |
VPC | hiperv | VBox | VMware | Paralelas | |
---|---|---|---|---|---|
Win7 | incógnita | incógnita | incógnita | incógnita | incógnita |
Win81 | - | incógnita | incógnita | incógnita | incógnita |
Win10 | - | incógnita | incógnita | incógnita | incógnita |
Este proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para obtener más información, consulte las preguntas frecuentes sobre el Código de conducta o comuníquese con [email protected] si tiene alguna pregunta o comentario adicional.