Dans un précédent billet, nous avons vu comment installer vagrant facilement sur Mac OS X. Voyons maintenant comment l’utiliser pour démrrer une machine virtuelle simplement.
Construire une image vide ——- Crééz vous un dossier pour le projet et placez vous dedans:
mkdir website
cd website
Crééz un fichier nommé Vagrantfile
et ajoutez-y le contenu suivant:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--cpuexecutioncap", "90", "--memory", "2048"]
end
config.vm.synced_folder ".", "/home/vagrant/website"
end
Maintenant vous avez un Vagrantfile
minimal, il va télécharger une image nommée precise64
depuis le Cloud ( en fait http://files.vagrantup.com/ ) et s’en servir pour créer une instance virtualbox headless avec 2Go de RAM. L’image precise64
est en fait une image contenant Ubuntu 12.04.4 (precise pangola) pré-installé.
Ce fichier vagrant va également configurer une synchronisation du dossier courant côté hôte (donc le dossier website créé plus haut) avec le dossier /home/vagrant/website
dans la VM. Par défaut le dossier courant est mappé sur /vagrant
dans la VM mais je préfère rester dans un sous dossier de $HOME
sur l’hôte comme sur la vm.
( plus d’info sur la configuration de l’instance virtualbox sous-jacente sur http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm )
Manipuler l’état de la VM
Nous sommes maintenants prêts à démarrer notre VM:
vagrant up
Cela devrait vous afficher quelque chose comme :
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'precise64'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_default_1396680997107_72702
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Error: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.2.0
default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
default: /vagrant => /private/tmp/vagrant
default: /home/vagrant/website => /private/tmp/vagrant
Bravo, votre VM est démarrée, il reste à s’y connecter. Lors du démarrag, vous avez peut-être remarqué les lignes:
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
On se connecte donc en ssh sur la machine:
vagrant ssh
À l’issue de cette commande vous êtes dans un shell exécuté dans la machine virtuelle.
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)
* Documentation: https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 06:23:18 2012 from 10.0.2.2
vagrant@precise64:~$
Quittez ce shell, nous allons maintenant arrêter la VM:
vagrant halt
qui devrait vous afficher
==> default: Attempting graceful shutdown of VM...
Une dernière commande qui peut ête utile, supprimer la VM. Cela peut servir si vous décidez d’arrêter de travailler sur le projet ou si vous voulez recréer complètement la VM from scratch.
vagrant destroy
Cette commande va vous demander confirmation et si besoin arrêter la VM.
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...
Félicitations! Vous êtes maintenant armé pour créer des machines virtuelles avec vagrant.