Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Introduction à Vagrant: un exemple avec un environnement pour Magento 2

Article posté le 12-06-2016 dans la catégorie PHP

Depuis plusieurs années, un développeur intégré dans une équipe ne code plus - ou presque plus - dans un environnement de développement commun. Ces deux dernières années, on peut même dire que deux solutions revenaient souvent à la bouche des uns et des autres: Docker, Vagrant, sur lequels on rajoutait encore d'autres termes comme Puppet...

Voici donc un petit tour d'horizon, avec un exemple concret pour créer un environnement de développement avec Magento 2 (PHP).

Introduction

Pour définir l'environnement d'un développeur, il y avait avant deux grandes possibilités:

  1. soit l'équipe disposait d'un serveur de développement commun, ce qui pouvait devenir vite problématique quand on travail à plusieurs sur un même projet, les mêmes fichiers...;
  2. soit le développeur avait créé un environnement de développement en local sur son poste, ce qui pouvait cette fois devenir compliqué quand il s'agissait de jongler avec plusieurs projets.

Est ensuite apparu, durant les seconde partie des années 2000, la mode de la VM (Virtual Machine). Il s'agissait du fait que le responsable technique du projet crée une machine virtuelle comprenant un OS, un serveur... bref tout le nécessaire pour créer un environnement le plus proche possible de celui du serveur de production. La VM était alors distribuée aux développeurs. Les avantages sont clairs:

Ce mode de travail est encore très en vogue, je l'utilise encore moi-même sur de nombreux projets. Mais depuis sont apparus de nouveaux concepts, parmi lesquels Vagrant et Docker.

Nous pouvons ajouter le fait que les conteneurs sont échangeables: ainsi vous trouverez sur Internet des dépôts de conteneurs tout prêts, déjà configuré pour tel ou tel environnement.

Nous en arrivons à présent au but de cet article: Vagrant. Il s'agit d'un concept intermédiaire entre la VM et le conteneur. Ici, on utilise des VMs, mais avec une enveloppe (wrapper) qui permet de la manipuler et de la pré-configurer. Par défaut Vagrant utilise VirtualBox (qui doit donc être installé sur le poste hôte), mais il peut à présent travailler notamment avec VmWare.

Tout comme Docker, Vagrant dipose de dépôts. Sauf qu'ici nous avons deux sortes de dépôts: un  pour la configuration de la VM (le wrapper), et un pour la machine virtuelle en elle-même. Cela signifie que vous pouvez tout à fait créer votre propre configuration en utilisant une VM existante. On a ainsi beaucoup de flexibilité.

L'enveloppe contient en fait des fichiers de configuration et des scripts. Lors de la première utilisation, Vagrant va d'abord télécharger la VM et la gardera toujours en stock, ainsi si vous utilisez une autre configuration utilisant cette même VM, il n'aura pas besoin de la re-télécharger.

Ensuite, Vagrant va lancer le script de configuration de l'environnement, et la VM sera parfaitement utilisable. Ce script n'est ni plus ni moins qu'un script shell Linux. On a donc beaucoup de liberté.

Installation d'une box avec Magento 2

Pour continuer notre explication, passons à la pratique.

Il y a quelques temps, j'ai trouvé un wrapper Vagrant qui contenait PHP5.5, MySQL et Magento 2. La version de PHP5 était un peu vieillote (et même incompatible avec certains composants de Magento 2) et j'ai donc décidé de faire un fork de ce travail pour mettre à la place PHP7 avec en plus phpMyAdmin qui manquait cruellement. En attendant peut-être de merger ce travail avec le dépôt original...

Pour l'utiliser, il y a quelques étapes (pour rappel, vous devez avoir Virtual Box d'installé):

note: tous les identifiants sont sur la page du dépôt github.

  1. clôner mon dépôt github dédié à cette version en utilisant Git ou TortoiseGit;
  2. se positionner dans le répertoire "magento2-vagrant" et y exécuter les commandes qui permettront d'initialiser le dépôt de Magento 2 (attention, l'opération peut être longue, vous devez attendre qu'elle soit correctement achevée):
    1. git submodule init
    2. git submodule update
  3. installer Vagrant avec l'installeur officiel. Ensuite, se positionner dans le dépôt que vous avez clôné, et via la console, taper "vagrant up". L'opération va être longue: Vagrant va télécharger la VM puis la configurer. Là aussi, attendez bien la fin;
  4. quand c'est terminé, vous devriez pouvoir avoir accès à phpMyAdmin en vous connectant à l'URL 192.168.33.10/phpmyadmin. Connectez-vous alors en SSH (avec putty par exemple) à la machine (127.0.0.1::2222). Identifier vous en tant que vagrant puis en tant que root. Vous avez les pleins pouvoir.
  5. si vous avez composer d'installé sur votre machine physique, positionnez vous dans le répertoire de magento2. Sinon, via SSH positionnez vous dans le répertoire /var/www/html/magento2. Il s'agit du même dossier, contenant votre dépôt Magento. C'est ici que vous travaillerez avec votre IDE. C'est un répertoire partagé entre la VM et votre machine physique. Ici, faites un composer install. Cela va prendre un moment, mais c'est normal car il télécharge toutes les dépendances de votre projet Magento 2. Quand c'est terminé, ce dernier est alors accessible à l'adresse 192.168.33.10/magento2.

A présent, vous pouvez coder. A noter que si vous lancez VirtualBox, vous verrez la VM apparaître dans la liste. Pour savoir comment utiliser Vagrant, je vous invite à consulter la doc officielle qui est très claire et facile à lire.

 

 


Tweet
comments powered by Disqus