Le code de ce dépôt contient les fichiers de script que nous utilisons pour créer les machines virtuelles gratuites disponibles sur https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ La principale raison d'ouvrir ce projet en source ouverte est pour la communauté pour vous aider avec les modèles des différentes VM et ajouter des fonctionnalités ou des configurations qui pourraient leur être utiles.
Ce script génère des VM pour plusieurs plateformes (VirtualBox et Vagrant, Parallels, Hyper-V, VMWare), notifie par e-mail le processus, télécharge les fichiers sur un stockage Azure pour leur distribution et crée un nouveau fichier JSON à mettre sur le site Web. Certaines de ces étapes n'auront aucun sens pour vous, alors n'hésitez pas à les pirater et à les désactiver.
Il existe des problèmes connus avec les scripts, alors assurez-vous de consulter la section des problèmes.
Actuellement, ce processus ne fonctionne que sur les machines Windows 8.1.
Pour une installation automatique des logiciels requis, vous pouvez utiliser le script .scriptsappswinappinstaller.ps1
Il utilise Chocolatey pour installer les programmes de la liste précédente. Il n'est pas recommandé d'utiliser le script sur des machines sur lesquelles certains programmes sont déjà installés manuellement. Le but du script est de gagner du temps lors de l'installation sur des machines propres.
Bien que sous Mac, seuls Packer et Parallels soient requis, vous pouvez les installer automatiquement à l'aide du script .scriptsappsmacappinstaller.sh
. Le script utilise Homebrew pour installer les applications. Parallels nécessitera en plus de l'installation l'enregistrement d'une clé valide. Si Packer ne s'installe pas correctement, écrivez dans le terminal brew install packer
pour réessayer l'installation.
Voici les instructions pour mettre en place un environnement presque entièrement automatisé. Pendant le processus de création de VM, l'hôte doit parfois être redémarré ou certaines autorisations sont requises. Si vous n'effectuez aucune intervention manuelle, vous pouvez ignorer certaines étapes telles que la connexion automatique, etc.
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Décompressez les fichiers Packer dans C:packer
.
Le générateur ISO Hyper-V dans Packer 1.1.2 fonctionne bien sur Windows 10 version 1709.
Nous installons automatiquement les extensions invité, mais pour ce faire en silence, l'installation doit ajouter le certificat Oracle à la liste des certificats de confiance dans le système d'exploitation invité. Pour le moment, nous vous suggérons de suivre le processus décrit dans ce guide. Vous devrez placer ce fichier .cer
dans scriptsfloppyguesttoolsoracle-cert.cer
. Dans un avenir proche, nous prévoyons de mettre à jour le processus pour suivre les instructions du manuel officiel dans la section 4.2.1.3. Installation sans surveillance .
Définissez la politique d'exécution en tapant ceci dans votre fenêtre 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
Le paramètre de registre suivant définit la connexion automatique et enregistre également le nom d'utilisateur et le mot de passe par défaut qui seront utilisés pour se connecter à chaque redémarrage.
$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
Le dossier bin
doit contenir les dossiers suivants
AzCopy
avec tous les binaires et aucun sous-dossierPutty
avec plink.exe et putty.exePackerMerge
avec le résultat de la compilation des toolsPackerMerge
avec Visual Studio (il doit copier le résultat directement dans le bon dossier une fois la construction terminée)VMSGen
avec le résultat de la compilation des toolsVMSGen
avec Visual Studio (il doit copier le résultat directement dans le bon dossier une fois la construction terminée) Vous devrez également télécharger BgInfo, le décompresser et mettre le .exe dans scriptsfloppybginfo
Pensez à installer également 7-Zip pour Windows 64bits
Pour activer l'hyperviseur :
bcdedit /set hypervisorlaunchtype auto
Pour désactiver l'hyperviseur :
bcdedit /set hypervisorlaunchtype off
Il est recommandé que la première machine que nous avons générée ne soit pas HyperV. La première fois que nous générons une machiche virtuelle Hyper-V, l'ordinateur redémarrera.
Clonez ce dépôt dans /Users/admin/dev.microsoftedge.com-vms/
git clone https://github.com/MicrosoftEdge/dev.microsoftedge.com-vms/
Activer le partage de fichiers Apple
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
Activer PME
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
Partager le dossier du référentiel
sudo sharing -a /Users/admin/dev.microsoftedge.com-vms/
(Remarque : cette étape n'est pas nécessaire si le script .scriptsappsmacappinstaller.sh
a été exécuté.)
Décompressez les fichiers Packer dans /Users/packer
(Remarque : cette étape n'est pas nécessaire si le script .scriptsappsmacappinstaller.sh
a été exécuté.)
sudo nano /etc/paths
Le système d'exploitation Apple Mac OS X a SSH installé par défaut mais le démon SSH n'est pas activé. Cela signifie que le script vmgen ne peut pas se connecter à distance ni effectuer de copies à distance tant que vous ne l'activez pas.
Pour l'activer, allez dans "Préférences Système". Sous « Internet et réseaux », il y a une icône « Partage ». Exécutez ça. Dans la liste qui apparaît, cochez l'option "Connexion à distance".
Important : une fois SSH activé sur Mac, nous devons nous y connecter manuellement par Putty SSH depuis l'ordinateur Windows prêt à lancer le processus. De cette façon, le Mac est reconnu par Putty lorsque le processus est exécuté. Si nous n'enregistrons pas le Mac comme connexion acceptée, la connexion SSH affichera cette erreur lors du processus de génération. 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.
Ce processus utilise les ISO, et plus précisément la Client Enterprise Evaluation. Vous devriez légalement obtenir une copie de l'iso pour l'invité que vous souhaitez créer et la placer directement dans le dossier scriptsiso
.
Si vous souhaitez accélérer le processus de création des machines virtuelles, vous pouvez créer une image ISO Windows intégrée à jour. Il existe des guides en ligne comme celui-ci qui expliquent le processus en détail.
Pour exécuter le script, nous devons ouvrir n'importe quelle console Windows PowerShell avec des droits d'administrateur et exécuter le script vmgen.ps1 avec le paramètre -Build.
.vmgen.ps1 -Build
Ce script nécessite un fichier de configuration appelé vmgen.json
situé dans le même répertoire. Ce fichier est utilisé par l'outil de génération pour savoir quelles Machines Virtuelles doivent être générées. Le contenu du fichier de configuration doit avoir ce format :
{
"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 - Indique le numéro de build. Cet identifiant sera utilisé pour générer le nom du dossier de sortie.
OutputPath - Chemin d'accès pour stocker les fichiers ZIP.
AzureUpload : indique si les fichiers de sortie seront téléchargés sur un compte de stockage Azure.
AzureStorage - Contient l'URL et la clé du compte de stockage Azure pour télécharger les fichiers de sortie.
Mac - Contient l'adresse IP, l'utilisateur et le mot de passe SSH, ainsi qu'un chemin partagé.
Mail - Configuration SMTP pour envoyer des e-mails aux personnes appropriées
OsRenaming (facultatif) - Indique les noms finaux souhaités dans le JSON de sortie pour les versions du système d'exploitation. Disons que périodiquement nous exécutons le processus pour Win10 et que nous voulons dans la sortie JSON la version de build spécifique "Win10 (x64) build 2345". Cette version renommée du JSON de sortie est celle envoyée par mail. Si un changement de nom n'est pas souhaité, supprimez simplement cette section.
VMS - Structure d'objet pour définir les machines virtuelles dev.microsoftedge.com à générer. Les valeurs valides pour chaque niveau sont les suivantes :
Pour télécharger les fichiers générés après un build sans régénérer les VM, nous devons exécuter le script vmgen.ps1 avec les paramètres -Build et -OnlyUpload.
.vmgen.ps1 -Build -OnlyUpload
Une version spécifique JSON sera générée dans OutputPath. Si vous souhaitez que votre résultat soit fusionné avec un autre fichier, placez-le dans le même dossier portant le nom vms.json.
Renommer automatiquement : pour renommer automatiquement la sortie JSON dans le processus, ajoutez simplement la section OsRenaming
dans le fichier vmgen. Lorsque le processus de génération est exécuté, une copie du JSON de sortie avec le changement de nom sera stockée dans le chemin de sortie, à l'intérieur du dossier de notification. Cette version est celle qui sera envoyée par email au destinataire de messagerie configuré.
Renommer manuellement : si vous souhaitez renommer manuellement la sortie JSON, vous pouvez utiliser le scriptsvmsrename.ps1
. Par exemple, si nous voulons changer la valeur Win10 utilisée dans le processus de génération pour un nom explicite avec build et architecture :
.vmsrename.ps1 "Win10" "Win10 (x86) Build 6307"
Le fichier d'entrée vms.json
doit se trouver dans le même dossier que le script et le fichier de sortie sera vms_renamed.json
.
Pour générer une nouvelle plateforme, effectuez les étapes suivantes :
floppy_files_OS.json
, OSx64.json
et urls_OSx64.json
de template-parts/templates vers template-parts.url_OSx64.json
et entrez les propriétés iso_url
et iso_checksum
correctes.OSx64.json
et modifiez les propriétés vm_name
et output_directory
pour chaque configuration de générateur.floppy_files_OS.json
. Vous pouvez le laisser sans modifications.BuildTemplates.ps1
et les lignes suivantes pour ajouter une nouvelle génération de modèle. $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 | HyperV | VBox | VMware | Parallèles | |
---|---|---|---|---|---|
Win7 | X | X | X | X | X |
Win81 | - | X | X | X | X |
Win10 | - | X | X | X | X |
Ce projet a adopté le code de conduite Microsoft Open Source. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.