Machines virtuelles Ubuntu avec Vagrant

Vagrant+ Ubuntu + Virtual Machine = Bonne nuit de sommeil

Introduction

En tant qu’étudiant dans le BTS SIO, il m’est demandé des mettre en place de nombreuses solution informatique que ce soit pour du développement ou de la mise en place de services réseau. En tant que bon informaticien, j’ai cherché la méthode la plus rapide pour réaliser, c’est TP et j’ai trouvé Vagrant. Qui permet la mise en place de machines virtuelles ,Ubuntu, Debian et autre OS Linux rapidement. Commençons par le début.

Logo Vagrant

Qu’est-ce que Vagrant et quelle machines virtuelles peuvent être crées ?

Vagrant est un outil open-source qui permet de créer et gérer des environnements de développement virtuels. Il est conçu pour faciliter la création, la configuration et le déploiement d’environnements de développement dans des machines virtuelles.

Vagrant est compatible avec différents fournisseurs de machines virtuelles, comme VirtualBox, VMware, Hyper-V et Docker. Il utilise des fichiers de configuration simples pour décrire les caractéristiques des machines virtuelles, comme le système d’exploitation, les packages et les services installés, les paramètres de réseau, etc.

Comment installer Vagrant ?

Pour commencer, vous devez installer Vagrant sur votre ordinateur. Vous pouvez télécharger la dernière version de Vagrant à partir de son site web officiel (https://www.vagrantup.com/downloads).

Une fois téléchargé, exécutez le fichier d’installation et suivez les instructions à l’écran.

Comment créer des machines virtuelles avec Vagrant : (Ubuntu) ?

Une fois Vagrant installé, vous pouvez créer une machine virtuelle en quelques étapes simples :

Créez un nouveau dossier pour votre projet et ouvrez-le dans votre terminal. Initialisez un nouveau projet Vagrant en exécutant la commande suivante :

vagrant init

Cela créera un fichier de configuration Vagrant par défaut nommé « Vagrantfile » dans votre dossier.

Ouvrez le fichier Vagrantfile avec votre éditeur de texte préféré et modifiez la configuration selon vos besoins. Par exemple, si vous voulez utiliser une image de machine virtuelle Ubuntu, vous pouvez ajouter la ligne suivante :

config.vm.box = "ubuntu/focal64"

Ensuite, vous pouvez démarrer la machine virtuelle en exécutant la commande suivante :

vagrant up

Cela téléchargera l’image de la machine virtuelle Ubuntu (si elle n’est pas déjà téléchargée), créera une nouvelle machine virtuelle basée sur cette image et exécutera les scripts de provisionnement que vous avez spécifiés dans le fichier Vagrantfile.

Une fois la machine virtuelle démarrée, vous pouvez vous y connecter en exécutant la commande suivante :

vagrant ssh

Cela ouvrira une connexion SSH à la machine virtuelle, vous permettant d’exécuter des commandes dans le terminal de la machine virtuelle.
Comment gérer les machines virtuelles avec Vagrant ?

Vous pouvez gérer les machines virtuelles créées avec Vagrant en utilisant les commandes suivantes :

vagrant up : démarrer la machine virtuelle.
vagrant halt : arrêter la machine virtuelle.
vagrant reload : redémarrer la machine virtuelle.
vagrant destroy : supprimer la machine virtuelle.
vagrant status : afficher l'état de la machine virtuelle.
vagrant ssh : se connecter à la machine virtuelle en utilisant SSH.
vagrant provision : exécuter à nouveau les scripts de provisionnement.

Vous pouvez également personnaliser la configuration de la machine virtuelle en modifiant le fichier Vagrantfile, par exemple en ajoutant des scripts de provisionnement, des partages de dossiers, des paramètres de réseau, etc.

Maintenant que vous savez comment créer des machines virtuelles avec Vagrant : (Ubuntu). Nous allons pouvoir passer au usage plus avancées.

Comment automatisées des machines virtuelles avec Vagrant : (Ubuntu) ?

Comme exemple de machines virtuelles généré avec Vagrant, je vais vous monter un Script Ruby pour la mise en place d’un serveur web PHP avec Ubuntu

Présentation de l’arborescence fichier

Vous pouvez stocker vos scripts VagrantFile où vous voulez dans vos dossiers. Je vous conseille de stocker toutes vos VMs dans un dossier unique et de rajouter le nom de vos projets pour savoir laquelle sert à quoi.

Il y aura deux dossiers par projet :

  • Vagrant_VM : Qui contient les Scripts
  • Vagrant_Folder : Qui contient le Code
|- All_VM
||- Vagrant_VM_Nom_du-projet
||- Vagrant_Folder_Nom_du-projet

VagrantFile dans Vagrant_VM :

Dans un premier temps, il faut configurer les propriétés de la machine virtuelle et l’hyperviseur que l’on souhaite utiliser, j’utilise VirtualBox pour ses performances sur host OS Linux.

Configuration de l’hypervision :

Choix du système d’exploitation :

Ici on choisie l’OS Ubuntu Focal64 :

config.vm.box = "ubuntu/focal64"   
config.vm.box_url = "https://vagrantcloud.com/ubuntu/focal64"
Choix de l’adresse IP :

Ici on choisie l’adressee IP de la VM sur un réseau NAT :

config.vm.network :private_network, ip: "192.168.56.156" 

Il est possible de Bridge avec le commande :

config.vm.network :public_network, bridge: '[Nom de la Carte Reseau]'
Configuration des ressouces de la VM et le hyperviseur :

Ici on choisie VirtualBox, pas d’interface graphique et 2048 Mo de RAM (2go)

config.vm.provider "virtualbox" do |vb|      
vb.gui = false
vb.memory = "2048"
end
Configuration de la syncronisation avec le dossier Vagrant_Folder :

Ici, on synchronise /var/www/html avec le dossier Vagrant_Folder sur notre machine host pour travailler sur notre projet depuis celle-ci depuis notre IDE préféré.

config.vm.synced_folder "../Vagrant_Folder", "/var/www/html"
Script pour les Démarrage :

Ici on indique le code à exécuter au premier démarrage, puis à tous les suivant

config.vm.provision "shell", inline: <<-SHELL
    [Code Bash Premier Démarrage]
SHELL

config.vm.provision "shell", run: "always", inline: <<-SHELL
    [Code Bash Tous Démarrage]
SHELL
(Bonus) Le script Bash

Le script ci-dessous permet d’avoir une base de données, PHPMyAdmin et un serveur PHP. Il est à copier ici :

config.vm.provision "shell", inline: <<-SHELL
    [ICI]
SHELL
apt-get update && apt upgrade
touch ~/LogInstallVagrantfile.log
sudo apt-get install -y mariadb-server mariadb-client apache2 php-fpm php-xdebug npm

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

touch SQL.tmp
echo "CREATE USER 'user'@'localhost' IDENTIFIED BY '[MDP pour BDD]';" > SQL.tmp
sudo mariadb < SQL.tmp
echo "GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';" > SQL.tmp
sudo mariadb < SQL.tmp

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y phpmyadmin
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf

sudo a2enconf phpmyadmin
sudo a2enconf php7.4-fpm
sudo a2enmod proxy_fcgi setenvif
sudo service apache2 restart

sudo rm SQL.tmp
Fichier VagrantFile au complet :

Un fichier vagrantFiles ressemble à ça :

# -*- mode: ruby -*-
# vi: set ft=ruby :
#VMPHP

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu/focal64"
  config.vm.box_url = "https://vagrantcloud.com/ubuntu/focal64"
  config.vm.network :private_network, ip: "192.168.56.6"

  config.vm.provider "virtualbox" do |vb|
     vb.gui = false
     vb.memory = "2048"
  end

  config.vm.synced_folder "../FolderPortefolio", "/var/www/html"

  config.vm.provision "shell", inline: <<-SHELL
        [BASH]
  SHELL

  config.vm.provision "shell", run: "always", inline: <<-SHELL
        [BASH]
  SHELL

end

Pour lançer cette machine il suffit d’aller dans le dossier qui contient le fichieer vagrantfiles avec un terminal et de tapper :

vagrant up

Conclusion :

Vagrant peut enormement simplifier la vie des informaticien que l’on soit devellopeur ou autre. Ce tutoriel n’est qu’une mise en bouche des possibiliter de ce système. Les possibilité de vagrant sont presque infini quand on regarde les fonction les plus avancées.

Si vous avez aimé cette article vous aimerez sans doute aussi :