24 janvier 2014

Vagrant / Chef - Automatiser la création d'un serveur Apache / PHP dans une machine virtuelle Linux Ubuntu

Article suivant : DevOps / Chef - Installation de Chef et de Ruby
 

Dans cet article, nous allons utiliser Vagrant et Chef pour voir comment automatiser la création d'un serveur Linux ainsi que l'installation du serveur Apache sur ce serveur.




Vagrant s'inscrit dans la démarche d'une infrastructure agile en permettant l'automatisation de la création et de la configuration de serveurs à la volée.

L'interfaçage de Vagrant avec des outils comme Puppet et Chef permettent de tester dans une intégration continue la création et la préparation de futures machines virtuelles.

Ceci s'intègre dans la démarche DevOps dont l'objectif est d'apporter de l'agilité à la fois du côté des équipes de développement, et à la fois au niveau des équipes chargées de l'infrastructure.

En effet, la création et la mise à disposition rapide de machines virtuelles testées et prêtes à l'emploi permettent aux administrateurs systèmes de répondre rapidement à la demande des équipes projets.

Cela permet de diminuer la frontière entre les mondes du développement et de l'infrastructure en améliorant la communication et la réactivité des deux côtés.

Présentation de Vagrant

De manière concrète, Vagrant est un outil en ligne de commandes qui permet d'automatiser la création et la préparation des machines virtuelles pour les environnements de développement, d'intégration et même de production.


Dans un premier temps, il télécharge des images de machines virtuelles existantes.

Ensuite, il effectue la préparation de la machine virtuelle, comme la configuration du système, la création d'utilisateurs systèmes, l'installation et la configuration des programmes.

Cette préparation peut être effectuée par des scripts bash ou à l'aide d'outils comme Puppet, Chef ou Docker. Leur véritable intérêt est que les scripts de Puppet et Chef peuvent être testés.

Nous pouvons ainsi avoir une intégration continue permettant de tester la préparation, la configuration et l'installation des VM pour les différents environnements: développement, intégration, qualification et production.

Vagrant supporte en mode gratuit les VM sous VirtualBox et en mode payant les VM sous VMWare.

Installation

Pour utiliser Vagrant, nous avons besoin d'installer :

VirtualBox

Vagrant

  • Indiquer le programme où sera installé Vagrant
  • Confirmer et terminer l'installation


Etape 1 - Créer la machine virtuelle avec Vagrant

Nous allons utiliser Vagrant pour créer une machine virtuelle Linux Ubuntu 64bits et y installer un serveur Apache :
  • Ouvrir un terminal de commandes
  • Créer un nouveau dossier et aller dans ce dossier
  • Tapper la commande pour créer la VM :
  • vagrant init precise64 http://files.vagrantup.com/precise64.box
  • Le fichier Vagrantfile a été créé dans le répertoire 
Nous définissons dans ce fichier l'adresse IP de la machine virtuelle pour y accéder plus tard à l'aide d'un navigateur Web :
  • Ouvrir ce fichier Vagrantfile avec un éditeur de texte
  • Décommenter la ligne suivante sans changer l'adresse IP :
  • config.vm.network :private_network, ip: "192.168.33.10"

Téléchargement et création de la VM

Nous lançons maintenant le téléchargement, la création et le démarrage de la machine virtuelle à l'aide de Vagrant.
  • Lancer la commande suivante :
  • vagrant up

Vagrant effectue alors les actions suivantes :
  • Il télécharge la machine virtuelle : 
  • Il configure la VM :

Se connecter en SSH

Il est possible de se connecter en SSH à la machine virtuelle démarrée par vagrant.
  • Dans le terminal de commandes, lancer :
    • vagrant ssh
  • Pour la question "Enter passphrase for key", appuyer sur Entrée sans rien saisir
  • Saisir le mot de passe : "vagrant"
  • Une fois connecté, il est possible d'être l'utilisateur root via la commande suivante :
    • sudo su
Pour la suite de cet article, il faut quitter l'accès en SSH à la VM de vagrant en lançant deux fois la commande "exit" dans le terminal de commandes.

Etape 2 - Préparer la machine virtuelle avec Chef : configuration du système et installation des programmes

Nous allons utiliser Chef en mode "solo" (sans serveur Chef) pour effectuer la configuration de la machine virtuelle.
  • Dans le répertoire où se situe le fichier Vagrantfile, créer le répertoire et sous-répertoires suivants :
    • cookbooks / apache / recipes
  • Dans le répertoire recipes , créer le fichier default.rb suivant :
  • Dans le fichier Vagrantfile, ajouter les lignes suivantes pour indiquer à Vagrant que nous utilisons Chef :
  • Ouvrir un terminal de commandes
  • Aller dans le répertoire où se situe le fichier Vagrantfile
  • Tapper la commande Vagrant suivante :
vagrant provision

Vagrant effectue l'installation du serveur Apache.

Vérification de la préparation de la VM

Nous pouvons vérifier que le serveur Apache est bien démarré sur la VM :
La page suivante doit s'afficher :

Arrêt de la VM

Pour arrêter la machine virtuelle, tapper la commande suivante :
vagrant halt

Prochain article

Le prochain article portera sur l'installation de Chef et de Ruby pour écrire des scripts d'intallation plus complexes :

Références