Par , le 24 novembre 2014

Eh toi développeur, Vagrant tu connais ?

Développement | 0

Préambule : cet article ne vas pas vous guider dans une installation de Vagrant, mais va expliciter l’intérêt et le fonctionnement général de l’outil. Si c’est un guide pas à pas de découverte que vous cherchez, je vous conseille de faire un tour sur la documentation officielle.

Vagrant est un outil qui facilite l’utilisation des machines virtuelles pour le développement (et donc pour le développeur). Le cas d’utilisation le plus commun étant la création de machine virtuelle dans VirtualBox.

Le grand principe de Vagrant est le suivant : développer à l’aide de ses outils habituels (Rubymine, Sublime text, Sequel pro, Chrome …) mais exécuter son code dans un environnement dédié (de préférence proche de l’environnement de production ; par exemple un Ubuntu Server).

Avoir un environnement dédié à chaque projet :

Vagrant s’intègre parfaitement à la nouvelle logique du “devops”. Cela signifie que le développeur se charge également de la mise en production et de l’exploitation.

Vagrant permet donc au développeur de créer facilement différents environnements. La logique est d’avoir un environnement (une machine virtuelle) par projet.

Les intérêts à cette pratique sont multiples :

  • L’environnement de développement sur lequel est lancée l’application est relativement proche des environnements de staging et de production.

  • Chaque projet possède son environnement isolé. “Casser” sa machine de développement s’avère une action malheureusement “facile”. Partager différentes versions de paquets et de librairies sur un même environnement n’est pas toujours simple.

  • L’utilisation de script d’installation est facilitée. Il est possible d’utiliser divers “provisionners” (utilitaire pour installer la machine). Les grands noms pour le provisioning sont notamment : script shell, Chef, Pupet … L’intégration des provisionners tels que Chef et Puppet permet d’utiliser les mêmes  scripts (tout du moins en partie) pour l’installation du projet en local et pour l’installation sur l’environnement de production. Vive les installations scriptées et automatisées.

Vous trouverez ci-dessous un schéma explicitant le fonctionnement haut niveau de Vagrant :

Intégration de vagrant au sein d'un environnement de développement.

Intégration de vagrant au sein d’un environnement de développement.

 

Astuces :

Qui dit nouvel outil, dit apprentissage et quelques galères. Vous trouverez ci-après quelques conseils sur l’utilisation de Vagrant.

Partage :

  • Ne partagez pas le dossier /home/vagrant, c’est une très mauvaise idée. Tout comme votre répertoire home sur votre machine hôte (machine de dev). Attention aux problèmes de droits. Préférez créer des répertoires à la racine et utiliser le répertoire par défaut créé par Vagrant (/vagrant).

  • Activez le partage NFS pour un gain de performance (non disponible pour windows apparemment).

Performance :

Sur certaines applications, j’ai relevé des problèmes de performance dû au partage de fichiers (même en mode NFS).

Pour ma part, j’ai essayé deux solutions :

  • L’application étant un site Rails et faisant principalement du développement coté serveur ; il est possible de désactiver le mode debug pour les assets (activer la concaténation des fichiers css et javascript). Le gain de performance est énorme (attention à gérer correctement la recompilation).

  • Désactiver le partage de Vagrant. Cela semble aller à contre courant avec l’outil mais permet surtout de charger ses pages deux fois plus vite (pour mon cas). Point négatif : il faut uploader “soi même” les fichiers sur la VM à chaque changement des fichiers de la machine hôte. Avec Rubymine, cette synchronisation est facile à mettre en place ; de plus Rubymine permet le remote debugging. L’intérêt de Vagrant est de toujours utiliser ses outils habituels, il serait donc dommage de “casser” son débugger. Autre solution pour cette synchro : développer un script Guard (ou autre) qui watch les fichiers et à chaque changement, upload le fichier dans la VM.

Liens utiles :

 

 

 

Partager l'article :

Vous souhaitez réagir ?

En soumettant ce commentaire vous donnez à Silicon Salad le droit de citer vos propos ainsi que votre nom/site. Tous commentaires dégradants ou hors-sujet peuvent-être supprimés par décision de l’auteur. Votre e-mail, ne sert qu’à des fins d’authentification, il ne peut-être ni partagé ni diffusé.
Vous pouvez commenter avec la syntaxe Markdown. En savoir plus

Article précédent
Eldorado et e-commerce