Automatisez le déploiement d'une application LAMP Stack & Laravel avec un script et Ansible

DEV - 16/05
L'un des projets les plus récents que j'ai réalisés était un projet d'examen pour un programme d'ingénierie cloud que je suis en train de réaliser....

L'un des projets les plus récents que j'ai réalisés était un projet d'examen pour un programme d'ingénierie cloud que je suis en train de suivre. Il nous a été demandé de :

  • Automatisez le provisionnement de deux serveurs basés sur Ubuntu, nommés « Maître » et « Esclave », à l'aide de Vagrant.
  • Sur le nœud Master, créez un script bash pour automatiser le déploiement d'une pile LAMP (Linux, Apache, MySQL, PHP).
  • Ce script doit cloner une application PHP depuis GitHub, installer tous les packages nécessaires et configurer le serveur Web Apache et MySQL.
  • Assurez-vous que le script bash est réutilisable et lisible.

  • Utilisation d'un playbook Ansible :

    • Exécutez le script bash sur le nœud Slave et vérifiez que l'application PHP est accessible via l'adresse IP de la VM (prenez une capture d'écran comme preuve)
    • Créez une tâche cron pour vérifier la disponibilité du serveur toutes les minuit.

Provisionner des machines virtuelles

Pour commencer ce projet, je dois provisionner deux serveurs Ubuntu nommés "Maître" et "Esclave" à l'aide de vagrant.

Je vais fournir Ubuntu 22.04 LTS pour le maître et l'esclave et j'utiliserai un environnement multi-machines, cela signifie essentiellement que je définirai deux machines virtuelles dans un seul fichier vagrant.

La première chose que je fais est d'initialiser la boîte, la boîte que j'utilise estUbuntu/jammy64et parce que j'utilise un environnement multi-machines, je passerai le-m(minimal) indicateur pour que le VagrantFile soit créé sans tous les commentaires.

init vagabond -m ubuntu/jammy64
Entrer en mode plein écran Quitter le mode plein écran

Lorsque j'ouvre le VagrantFile pour le modifier, nous pouvons voir qu'il n'a que la configuration de base sans tous les commentaires.

vi Fichier Vagrant
Entrer en mode plein écran Quitter le mode plein écran

Pour configurer mes VM, je vais entrer le code ci-dessous dans mon VagrantFile.

Vagrant.configure("2") faire |config| config.vm.define "master" faire |master| master.vm.box = "ubuntu/jammy64" master.vm.hostname = "master" master.vm.network "private_network", tapez : "dhcp" master.vm.network :forwarded_port, invité : 22, hôte : 2030, id : "ssh" master.vm.provider "virtualbox" faire |v| v.name = "Maître" end end config.vm.define "slave" do |slave| slave.vm.box = "ubuntu/jammy64" slave.vm.hostname = "slave" slave.vm.network "private_network", tapez : "dhcp" slave.vm.network :forwarded_port, invité : 22, hôte : 2032, id : "ssh" slave.vm.provider "virtualbox" faire |v| v.name = "Esclave" fin fin fin
Entrer en mode plein écran Quitter le mode plein écran

Dans le VagrantFile, j'ai simplement spécifié le type de boîtier de base avec lequel chaque VM serait créée, je me suis assuré qu'elles utilisaient un réseau privé et qu'elles obtenaient leur adresse IP du serveur DHCP. J'ai également spécifié le nom et le nom d'hôte de chaque VM.

Une autre chose que j'ai faite a été de coder en dur le port SSH hôte afin de gérer le conflit SSH qui se produirait, dès le saut, une autre raison pour laquelle j'ai fait cela est pour que le port n'entre pas en conflit avec les autres machines virtuelles que j'ai sur mon ordinateur portable. .

Pour provisionner les machines virtuelles, j'ai exécuté la commande

vagabonder
Entrer en mode plein écran Quitter le mode plein écran

À partir des images ci-dessous, vous pouvez voir que mes machines maître et esclave ont été provisionnées avec succès.

Pour y accéder et commencer à travailler avec, je me connecte en SSH en spécifiant leurs noms, comme indiqué ci-dessous

maître ssh vagabond esclave ssh vagabond
Entrer en mode plein écran Quitter le mode plein écran

Script Bash pour déployer la pile LAMP

Une pile LAMP est un acronyme pour le système d'exploitation Linux ; le serveur Web, Apache ; le serveur de base de données, MySQL ; et le langage de programmation, PHP.

Il s'agit d'une pile très courante que les développeurs utilisent pour créer des sites Web et des applications Web.

La tâche nous demandait d'écrire un script qui serait utilisé pour automatiser l'installation de la pile LAMP. Avec ce script, le déploiement de la pile LAMP ainsi que le déploiement de l'application Laravel seront entièrement automatisés, ce script sera écrit de manière à ne nécessiter aucune intervention de l'utilisateur. Je vais essayer d'expliquer ma logique en cours de route.

Retrouvez le script complet ici, pour créer votre script créez un nouveau fichier avec l'éditeur vi :

vi déployerlamp.sh
Entrer en mode plein écran Quitter le mode plein écran

Installer Apache

Pour commencer, je souhaite que ce script cesse de s'exécuter chaque fois qu'il rencontre une erreur, car le déploiement réussi de l'application Laravel dépend de la présence de tous les composants de ce script sur le serveur. Pour ce faire, nous utiliserons ledéfinir -ecommande, démarrez votre script de cette façon.

#!/bin/bash # Cette commande fermera immédiatement le script si une commande se termine avec un statut différent de zéro -e
Entrer en mode plein écran Quitter le mode plein écran

Ensuite, nous mettrons à jour le référentiel apt afin que nos packages soient à jour.

# Mettre à jour le référentiel apt sudo apt update
Entrer en mode plein écran Quitter le mode plein écran

Nous arrivons enfin au début de l'événement principal, nous allons maintenant ajouter la commande qui installe Apache à notre script, comme mentionné précédemment, Apache est un serveur Web très populaire utilisé par les développeurs.

Pour installer Apache, ajoutez la commande ci-dessous à votre script

# Installez Apache et gérez les éventuelles erreurs echo "Installation d'Apache ======================================= ===============" echo sudo apt install -y apache2 || { echo "Erreur lors de l'installation d'Apache"; sortie 1 ; } echo "Apache installé avec succès ========================================" echo
Entrer en mode plein écran Quitter le mode plein écran

Les commandes echo sont là pour nous informer à chaque étape de ce que fait le script.

La commandesudo apt install -y apache2 || { echo "Erreur lors de l'installation d'Apache"; sortie 1 ; }installera Apache ou imprimera un message d'erreur selon que l'installation réussit ou non.

Installer MySQL

MySQL est un serveur de base de données SQL rapide, multithread, multi-utilisateurs et robuste. Il est destiné aux systèmes de production critiques à forte charge et aux logiciels déployés en masse.

Ajoutez ce qui suit à votre script bash.

# Installez MySQL et gérez les éventuelles erreurs echo "Installation de MySQL ======================================= ===============" echo sudo...
[Courte citation de 8% de l'article original]
Loading...