RSS Feed

Archives de la catégorie ‘Linux’

Vagrant – la virtualisation des environnements de développement facile

28 April 2014 par SeB 2 commentaires »

Ne vous est-il jamais arrivé de ne pas être capable de reproduire, sur votre environnement de développement, un bug rencontré en production ? Vous êtes sûrement sous MS Windows ou Mac OS X alors que la production tourne sous GNU/Linux… Ou ne vous est-il pas arrivé de pester pour écrire ou suivre un guide d’installation d’un environnement de développement ?

Depuis quelques années, les VMs sont là pour répondre à ces problématiques. Néanmoins, ces outils ne sont pas toujours simple à mettre en place. C’est à cet instant que Vagrant entre en scène.

Présentation

Vagrant est un outil en ligne de commande pour créer et configurer des machines virtuelles. Il encapsule un logiciel de virtualisation (tel que VirtualBox ou VMware) et un logiciel de gestion de configuration (au sens provisionning de l’environnement tel que Chef, Puppet, Salt, Docker, etc…).

Les intérêts sont multiples :

  • disposer d’un environnement de développement sur un système d’exploitation différent de sa propre machine
  • avoir plusieurs environnements de développement sans modifier la configuration de son propre système (certains projets nécessitent des configurations système qui les rendent incompatibles entre eux)
  • monter rapidement un environnement de développement complet
  • certains outils sont plus faciles à installer sous GNU/Linux
  • etc…

L’avantage principal de Vagrant est qu’il ne repose que sur un simple fichier de configuration qui définit le système à utiliser et la configuration à appliquer. Les autres avantages sont :

  • outils très simple
  • les VMs sont portables
  • moins lourd que les VMs classiques
  • facilité à dupliquer et/ou reproduire un environnement autant de fois qu’on le souhaite

Installation

Prérequis

Pour pouvoir utiliser Vagrant, il faut simplement disposer de VirtualBox et de Vagrant aussi ! Il est possible de trouver beaucoup de tutoriels sur Internet pour Mac OS X ou GNU/Linux. Pour ma part, j’ai installé VirtualBox 4.3.10 et Vagrant 1.5.4 sur MS Windows 8.

VirtualBox et Vagrant

Télécharger la dernière version de VirtualBox et la dernière version de Vagrant, puis les installer.

La VM : une box

Vagrant repose sur des boxes. Ce sont les images des OS qui sont utilisées pour la virtualisation (ici par VirtualBox). Voici les commandes pour gérer les boxes :

# ajouter une box (l'URL est optionnelle pour les boxes officielle
$ vagrant box add nom_de_ma_box url_de_la_box

# supprimer une box
$ vagrant box remove nom_de_ma_box

# lister les boxes installées
$ vagrant box list

Un des autres intérêts de Vagrant est qu’il existe déjà de nombreuses boxes toutes prêtes à être utilisées (sur vagrantbox.es ou vagrantcloud.com) mais également de nombreux projets Vagrant proposant des boxes et/ou des configurations pour différents environnements de développement (Java EE, monitoring, PHP, etc…).

Il est également possible de créer sa propre box. Il est possible de trouver un exemple de création de box sur GitHub.

Ici, nous allons simplement réutiliser une box officielle avec la commande suivante :

$ vagrant box add hashicorp/precise32

Cette commande va prendre un peu de temps car elle va télécharger l’image de l’OS :

==> box: Loading metadata for box 'hashicorp/precise32'
box: URL: https://vagrantcloud.com/hashicorp/precise32
==> box: Adding box 'hashicorp/precise32' (v1.0.0) for provider: virtualbox
box: Downloading: https://vagrantcloud.com/hashicorp/precise32/version/1/provider/virtualbox.box
←[0m←[0m Progress: 100% (Rate: 609k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'hashicorp/precise32' (v1.0.0) for 'virtualbox'!

Une fois l’image téléchargée, elle est utilisable. Pour cela, il faut créer un répertoire pour votre projet et s’y placer dedans et enfin initialiser Vagrant avec la commande suivante :

$ vagrant init hashicorp/precise32

Cette commande va simplement créer le fichier de configuration Vagrant pour votre projet :

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Utilisation

Instance de la VM

Une fois l’environnement initialisé (et éventuellement configuré), il existe quelques commandes pour manipuler l’instance de la VM :

# démarrer et configurer la VM
$ vagrant up

# se connecter en SSH à la VM
$ vagrant ssh

# vérifier l'état des VM
$ vagrant status

# mettre en pause la VM
$ vagrant suspend

# sortir de pause la VM
$ vagrant resume

# arrêter la VM
$ vagrant halt

Au premier lancement, Vagrant va construire à l’instance de la VM en fonction du fichier de configuration Vagrantfile :

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'hashicorp/precise32'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'hashicorp/precise32' is up to date...
==> default: Setting the name of the VM: virtualisation_default_1398468142891_45569
==> 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: 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: Warning: 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 => C:/projects/virtualisation

La VM est lancée. Il est possible de s’y connecter en SSH et de vérifier l’OS de la VM avec la commande suivante :

vagrant@precise32:~$ uname -a
Linux precise32 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux

Facile ! Non ?

Provisionning

Vous savez maintenant déclarer et utiliser une VM. Il est maintenant temps de s’intéresser au provisionning… Il y a au moins 4 façons de provisionner votre environnement :

C’est un sujet assez vaste que je ne vais pas détailler ici (des exemples très simples par Alexandre).

Conclusion

Nous avons là tous les éléments pour créer facilement, rapidement, de façon sûre et reproductible des environnements. Le champ d’application qui s’ouvre à nous est énorme !

  • tester des outils seulement disponibles sur un OS différent de notre machine
  • monter des environnements “types”
  • faire des tests de configuration système “jetables”
  • monter des environnements à la demande (pour l’intégration continue ou les tests de charge en continue)
  • etc…

Personnellement, dans un premier temps, je pense essayer de configurer un environnement d’intégration continue (avec Jenkins et Sonar comme l’a fait Olivier) mais surtout un environnement de monitoring (avec jmxtrans, collectd, graphite, etc…).

Ensuite, si ces tests sont concluant, je regarderai pour créer un environnement de développement complet (cad avec un environnement graphique, un IDE de développement, pré-configuration de tous les outils, etc…).

Je vous souhaite une bonne virtualisation !

 

Libtool – l’extension .so manquante

28 August 2006 par SeB Pas de commentaire »

Après avoir passé ma Debian Woody en Sarge, les scripts d’installation de GWhere ne fonctionnaient plus.

Scott James Remnant explique bien le problème et propose une solution.

Personnellement, les scripts de GWhere refonctionnaient correctement après avoir effectué les commandes suivantes :

$libtoolize -c -f $aclocal $autoconf

Bonne compilation ! ;-)

 

Migrer une Debian Woody en Sarge

27 August 2006 par SeB Pas de commentaire »

La Debian GNU/Linux 3.1, plus connue sous le nom de Sarge, est sortie le 6 juin 2005[1]. De plus, le support de sécurité de la Debian GNU/Linux 3.0, plus connue également sous le nom de Woody, s’est arrêté le 30 juin 2006[2].

Il était donc temps que je migre ma Debian Woody en Sarge ! Le passage de Woody à Sarge s’est fait correctement malgré quelques soucis d’espace disque insuffisant.

Notes

[1] Cf. L’annonce officielle de publication de la Sarge.

[2] Cf. L’annonce officielle de fin de support pour la Woody.

 

Debian Addict arrondit les angles

20 July 2006 par SeB 1 commentaire »

Non, non ! L’équipe de la rédaction ne va pas changer de ton ! ;-)

Le site fait seulement peau neuve. L’aspect des boîtes de l’interface graphique du site ont été revues, en s’inspirant de la présentation des Krazy Korners[1]. Ainsi, elles ont des angles arrondis. Le code des squelettes SPIP a été nettoyé[2] de même que les feuilles de style.

Quelques petites modifications mineures suivront, mais le principal est déja en place.

Notes

[1] Notez que le code HTML et CSS a été modifié pour obtenir un rendu plus élaboré.

[2] Factorisation des éléments communs, suppression du code inutile, etc…

 

Asus MyPal 620 – GNU/Linux

8 March 2006 par SeB 2 commentaires »

Le pingouin débarque enfin sur les Asus MyPal 620 !

Le portage de GNU/Linux sur le Pocket PC Asus MyPal 620 a repris. Le site Handhelds.org héberge les pages d’information sur le portage de Linux sur MyPal 620. Bien entendu ce portage fonctionne non seulement pour le MyPal A620 mais également pour le MyPal A620BT même si le bluetooth n’est pas encore supporté[1].

Le projet a été repris par Vincent Bénony qui a fourni un excellent travail. Puisqu’en pas moins de trois semaines il a publié différentes versions compilées du noyau Linux 2.6 en y intégrant le support de la mise en veille, du microphone, de l’infrarouge, … Il a également recompilé Opie pour cet appareil mobile.

Actuellement, le développement est freiné par crainte d’endommager la mémoire flash de l’unique Pocket PC disponible pour les tests. L’auteur est donc à la recherche d’un MyPal 620 ou 620 BT endommagé (écran cassé ou autre) mais capable de démarrer.

Voici un projet qui mérite d’être félicité ! En espérant qu’il continue à progresser pour fournir une réelle alternative libre pour de PDA.

Notes

[1] Le mainteneur du projet ne possède pas la version bluetooth de cet appareil, une quelconque aide extérieure est la bienvenue.

 

Shell- grep récursif

14 December 2004 par SeB Pas de commentaire »

Le programme grep est un outil très utile pour chercher par exemple tous les fichiers sources qui font référence à telle ou telle fonction. Néanmoins l’option permettant de faire une recherche récursive dans les répertoires n’est pas disponible sur toutes les plates-formes (AIX, HP-UX, …).

En principe, il est possible de faire :

$grep -r ma_fonction
$grep -d recurse ma_fonction
$rgrep ma_fonction

Si cela ne fonctionne pas, voici d’autres fonctions de procéder (avec les utilitaires find et xargs) :

$find . -type f -print | xargs grep ma_fonction
$find . -exec grep ma_fonction {} ; -print

lire la suite…

 

Etes-vous du genre Debian Addict ?

3 November 2004 par SeB Pas de commentaire »

Depuis que j’ai installé la distribution GNU/Linux Debian, je ne peux plus m’en passer.

En revanche, cette distribution possède la réputation d’être complexe d’utilisation. Pour démontrer qu’avec un minimum de connaissance et pour partager nos expériences, avec quelques amis et sous l’impulsion d’Olivier, nous avons créé le site Debian Addict.

lire la suite…