15
Comment approvisionner vos environnements avec vagrant #DevOpsRoadMap
Vagrant est un outil permettant de créer et de gérer des environnements de machines virtuelles dans un seul workflow. Il réduit considérablement le temps de configuration de l'environnement de développement.
Dans ce tutoriel vagrant, je vais vous apprendre à configurer Vagrant sur votre ordinateur afin de créer et gérer des machines virtuelles pour votre environnement de développement.
J’utilise vagrant depuis plus de 5 ans maintenant et je suis un grand fan. Chaque fois que je souhaite tester un outil ou technologie lié au DevOps, j’utilise Vagrant car il rend très facile l’approvisionnement d’un environnement de test.
Vagrant peut utiliser de nombreux providers de machines virtuelles tels que VirtualBox , VMware et Docker, mais à mon avis VirtualBox est le plus simple à utiliser et il est également l'option par défaut dans Vagrant.
Notre première étape consiste à installer VirtualBox, vous pouvez télécharger et installer la dernière version pour votre système d'exploitation à partir du site officiel.
Pour cet article nous allons utiliser la version 6.1.26 de VirtualBox en suivant ce lien https://www.virtualbox.org/wiki/Downloads.
Une fois ce prérequis installé, nous pouvons installer Vagrant en téléchargeant également la dernière version sur le site officiel https://www.vagrantup.com/downloads et puis l’installer sur votre ordinateur. Dans notre cas nous allons utiliser la version 2.2.18 de Vagrant
La fonction principale du Vagrantfile est de décrire le type des machines requis par projet, et comment configurer et provisionner ces machines. Vagrant est censé s'exécuter avec un seul fichier Vagrantfile par projet, et les fichiers Vagrant sont portables sur toutes les plates-formes prises en charge par Vagrant.
Exemple d’un Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network :private_network, ip: "192.168.50.1"
config.vm.provider :virtualbox do |vb|
end
end
config.vm.box: permet de préciser le nom de la box vagrant à utiliser. Vous pouvez retrouver l’ensemble des boxes héberger par vagrant ici https://app.vagrantup.com/boxes/search
config.vm.network: permet d’attribuer une adresse IP à la future VM qui sera créé.
config.vm.provider: permet de préciser le type de provider que nous allons utiliser. Dans notre cas c’est VirtualBox.
Nous allons dans le répertoire de travail de votre choix, créez un fichier nommé ‘Vagrantfile’ et y ajouter ce code
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network :private_network, ip: "192.168.50.1"
config.vm.provider :virtualbox do |vb|
end
end
Ensuite, démarrez la machine virtuelle Vagrant à l'aide de la commande suivante : ‘vagrant up’
La meilleure chose à propos de Vagrant est que vous pouvez utiliser le Provisionner qui va lancer la procédure d’installation et configuration automatique de vos VMs avec un script shell ou avec Ansible ou tout autre outil de déploiement automatisé.
Dans notre exemple, nous allons utiliser un script Shell pour créer des répertoires applicatifs et pour aller plus loin, à la fin de ce tutoriel vous y trouvez un fichier Vagrantfile beaucoup plus complet.
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provider :virtualbox do |vb|
vb.memory = 1024
vb.cpus = 1
end
config.vm.define "master" do |master|
master.vm.hostname = "master"
master.vm.network "private_network", ip: "192.168.50.10"
master.vm.synced_folder "app/", "/home/vagrant/app"
master.vm.provision "shell", inline: <<-SHELL
mkdir /home/vagrant/app/www
mkdir /home/vagrant/app/www/images
SHELL
end
end
- Démarrer tous VM du Vagrantfile
vagrant up
- Démarrer seulement une VM
vagrant up master
- Démarrer et réinstaller tous les VM
vagrant up –provision
- Démarrer et réinstaller seulement la VM master (ça peut être une autre vm)
vagrant up master --provision
- Se connecter à une VM via SSH
vagrant ssh master
- Arrêter tous les all VM
vagrant halt
- Détruire tous les VM
vagrant destroy
- Arrêter seulement la VM master
vagrant halt master
- Détruire la VM master
vagrant destroy master
- Afficher le status des VMs vagrant
vagrant status
15