Créer une boîte de base OS X Mountain Lion dans VMware Fusion 5
Apprenez à créer une boîte de base Vagrant pour OS X Mountain Lion avec VMware Fusion 5. Ce guide complet couvre l'ensemble du processus, de la configuration de la machine virtuelle à l'empaquetage, afin d'obtenir des environnements de développement uniformes sous Mac OS X. Idéal pour les développeurs qui doivent faire des tests sur le système d'exploitation d'Apple tout en profitant de la commodité du flux de travail de Vagrant.

Avant de commencer
Quelques mises en garde à garder à l’esprit :
- Une machine virtuelle sous OS X sera volumineuse. Une boîte de base OS X pèse environ 5,65 Go, ce qui dépasse la taille recommandée par Vagrant pour la portabilité. C’est inévitable. Gardez-le en tête et assurez-vous d’avoir l’espace disque nécessaire, ainsi que la patience requise lors de la création des boîtes. Les boîtes plus volumineuses sont plus longues à télécharger et à cloner. Comme je fais ceci à des fins de développement et d’administration, les temps de création sont acceptables au nom de tests reproductibles. Pour réduire les temps de téléchargement, vous pourriez héberger la boîte sur un serveur HTTP local à l’intérieur de votre réseau plutôt que dans le nuage, mais c’est facultatif.
- Votre version de Vagrant DOIT être 1.3.0 ou plus récente. Avant la version 1.3.0, OS X n’était pas pris en charge sans contournements ni bidouilles.
Vérification préalable
Cet article a été testé avec les éléments suivants :
- Apple OS X Mountain Lion (hôte et invité)
- VMware Fusion 5.0.3
- Vagrant 1.3.5
- Plugiciel vagrant-vmware-fusion 2.0.8 de Vagrant
Remarque : Un hôte et un invité OS X Mavericks suivront les mêmes étapes, mais nécessiteront au minimum VMware Fusion 6.x.
Créer une machine virtuelle OS X dans VMware Fusion
Créez une nouvelle machine virtuelle dans VMware Fusion.
Si vous ne savez pas comment créer une VM OS X dans VMware Fusion, laissez un commentaire pour demander un tutoriel. Pour l’instant, je vais supposer que vous savez comment le faire. Points à noter lors de la création de la machine virtuelle dans VMware Fusion :
- Lors de l’enregistrement de la VM, renommez le fichier mountain64-1_vmware.vmwarevm.
- Modifiez les paramètres du disque dur de la machine virtuelle afin de ne pas diviser le disque dur en fichiers de 2 Go.
- Au premier démarrage du système, les champs du premier utilisateur Full Name, Username et Password sont remplis avec
vagrant.
Configurer le système d’exploitation invité
Sauf indication contraire, toutes les étapes s’effectuent dans le système d’exploitation invité.
Installer VMware Tools
Première étape : nous installerons VMware Tools afin de permettre le copier-coller entre l’hôte et l’invité.
Sur l’hôte, avec VMware Fusion sélectionné :
- Dans la barre de menus d’Apple, sélectionnez Virtual Machine > Update VMware Tools… L’option de menu peut aussi s’intituler Install VMware Tools, Reinstall VMware Tools ou Update VMware Tools.
- Cliquez sur Install dans la boîte de dialogue qui s’ouvre.
Sur l’invité :
- Une fois l’image disque montée, double-cliquez sur le paquet Install Vmware Tools.
- Suivez les invites par défaut jusqu’à la fin de l’installation. Notez que l’installation vous demandera le mot de passe de l’administrateur.
- Redémarrez une fois l’installation terminée.
- Ouvrez une nouvelle session lorsque vous y êtes invité.
Vous pouvez maintenant copier-coller les commandes entre l’hôte et l’invité pour le reste de cet article, si vous le souhaitez.
Mettre à jour le système d’exploitation
Pour réduire le nombre de mises à jour nécessaires chaque fois que la boîte est créée, exécutez les mises à jour logicielles.
- Ouvrez le Terminal et exécutez :
$ sudo softwareupdate --install --all
- Attendez la fin des mises à jour. Redémarrez. Répétez au besoin, jusqu’à ce qu’aucune autre mise à jour ne soit offerte.
Désactiver le pare-feu d’OS X
Par défaut, le pare-feu d’OS X est désactivé. Assurez-vous que c’est bien le cas en vérifiant vos réglages Security & Privacy.
- Rendez-vous dans System Preferences > Security & Privacy.
- Sélectionnez l’onglet Firewall.
- Assurez-vous que le pare-feu est désactivé (Off).
Cet article ne porte pas sur la sécurité d’une boîte; le pare-feu devrait donc être désactivé par souci de simplicité. Si vous avez des exigences plus strictes, explorez les Firewall Options… à votre guise.
Activer la session à distance
Pour que Vagrant puisse se connecter par SSH à une boîte OS X, il suffit d’activer Remote Login.
- Rendez-vous dans System Preferences > Sharing.
- Cochez Remote Login pour l’activer.
- Facultatif : modifiez les permissions d’accès au besoin. All Users est sélectionné par défaut. Si vous remplacez cette option par Only these users:, ajoutez l’utilisateur vagrant que vous avez créé.
Télécharger la clé non sécurisée de Vagrant
Notre utilisateur vagrant utilisera une clé SSH pour obtenir un accès autorisé à la boîte.
$ mkdir -p /Users/vagrant/.ssh
$ chmod 0700 /Users/vagrant/.ssh
$ curl -o /Users/vagrant/.ssh/authorized_keys --url https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
$ chmod 0600 /Users/vagrant/.ssh/authorized_keys
$ chown -R vagrant /Users/vagrant/.ssh
Configurer sudo sans mot de passe
L’utilisateur vagrant doit disposer de la permission sudo sans mot de passe. Exécutez la commande suivante dans le Terminal :
$ sudo visudo
Ajoutez ou modifiez les lignes suivantes au besoin :
Defaults env_keep += 'SSH_AUTH_SOCK'
Defaults:vagrant !requiretty
# Add the vagrant user at the end of the file
vagrant ALL=NOPASSWD: ALL
Enregistrez et quittez.
Optimiser l’invité
Si nous examinions maintenant la taille de notre fichier VMware, nous verrions qu’elle est d’environ 16,26 Go lorsque la VM est en marche et de 14,11 Go lorsqu’elle est éteinte. Éteindre la VM et la compacter à ce stade ne réduirait presque pas sa taille : elle ne diminuerait que de 0,02 Go.
Cependant, si nous remplissons de zéros l’espace libre du disque de l’invité avant de le compacter, nous pouvons ramener la VM à environ 7,48 Go.
- Ouvrez un Terminal et tapez :
$ diskutil secureErase freespace 0 Macintosh HD
$ sudo halt
Finaliser la boîte
À partir de maintenant, tout se fait sur l’hôte.
- Ouvrez un Terminal et placez-vous dans le répertoire où la machine virtuelle a été enregistrée. Il s’agit généralement de ~/Documents/Virtual Machines/.
- Placez-vous dans le fichier .vmwarevm de votre machine virtuelle.
Créer un fichier metadata.json
- Exécutez la commande suivante dans le Terminal :
$ vi metadata.json
- Tapez le contenu suivant dans votre éditeur :
{ "provider": "vmware_fusion" }
- Enregistrez le fichier.
- Quittez votre éditeur.
Compacter la machine virtuelle
- Ouvrez le Terminal et tapez :
$ /Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager -k
- Tapez une espace, puis le chemin du fichier de disque virtuel de votre VM.
- Appuyez sur Retour.
Ce qui précède devrait avoir compacté le disque virtuel à environ 7,48 Go.
Empaqueter la machine virtuelle
L’empaquetage de la machine virtuelle avec tar et gzip réduit la taille de la boîte. Une fois empaquetée, la VM devrait faire environ 5,63 Go.
- Exécutez la commande suivante dans le Terminal :
$ tar -cvzf mountain64-1_vmware.box ./*
Une fois la compression terminée, déplacez le fichier .box vers un répertoire de travail de projet plus approprié ou vers un serveur Web. Pour cet exemple, nous utiliserons ~/workspace/vagrant-example. Ce dossier n’existe probablement pas sur votre système; créez-le donc, évidemment, avant d’essayer d’y déplacer le fichier.
Démarrer la boîte de base OS X Vagrant
Dans le Terminal, placez-vous dans l’espace de travail de notre projet, ~/workspace/vagrant-example. Exécutez ce qui suit :
$ vagrant box add mountain64 mountain64-1_vmware.box
$ vagrant init mountain64 mountain64-1_vmware.box
À ce stade, si nous voulons exécuter la machine virtuelle en mode sans interface (headless), il suffit d’exécuter :
$ vagrant up --provider=vmware_fusion
Si nous voulons plutôt l’exécuter en mode graphique, modifiez le Vagrantfile généré dans l’espace de travail de notre projet. Ajoutez les lignes suivantes :
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :vmware_fusion do |v|
v.gui = true
end
# Existing Vagrantfile generated template...
Exécutez ensuite :
$ vagrant up --provider=vmware_fusion
Si tout fonctionne, vous verrez la sortie suivante dans le Terminal :
Bringing machine 'default' up with 'vmware_fusion' provider...
[default] Cloning VMware VM: 'mountain64'. This can take some time...
[default] Verifying vmnet devices are healthy...
[default] Preparing network adapters...
[default] Fixed port collision for 22 => 2222. Now on port 2200.
[default] Starting the VMware VM...
[default] Waiting for the VM to finish booting...
[default] The machine is booted and ready!
[default] Forwarding ports...
[default] -- 22 => 2200
[default] Configuring network adapters within the VM...
[default] Enabling and configuring shared folders...
[default] -- /Users/username/workspace/vagrant-example: /vagrant