Installation automatisée de MediaWiki avec Ansible
L'objectif de ce projet est de mettre en place une installation automatisée de MediaWiki sur deux serveurs distincts, en utilisant l'outil d'automatisation Ansible. Cette installation permettra de créer un environnement fonctionnel pour le wiki des bénéficiaires de ACOLAF, facilitant ainsi le partage d'informations et les bonnes pratiques de développement au sein de l'entreprise.
- Automatiser l'installation d'un serveur web Apache, de PHP et de MariaDB sur deux serveurs distincts.
- Télécharger et déployer les fichiers sources de MediaWiki sur le serveur web Apache.
- Configurer le serveur web pour pointer vers l'URL du wiki.
- Finaliser l'installation de MediaWiki en exécutant le script d'installation.
- Installation automatisée d'Apache, PHP et MariaDB sur les serveurs cibles.
- Téléchargement et déploiement des fichiers sources de MediaWiki sur le serveur web Apache.
- Configuration du serveur web pour pointer vers l'URL du wiki.
- Exécution du script d'installation de MediaWiki pour finaliser l'installation.
- Analyser les besoins spécifiques des bénéficiaires de ACOLAF.
- Étudier les recommandations et les bonnes pratiques d'installation de MediaWiki.
- Concevoir les scripts Ansible pour automatiser le déploiement de l'infrastructure.
- Tester les scripts d'installation dans un environnement de développement.
- Déployer les scripts dans l'environnement de production et valider le bon fonctionnement du wiki.
- Scripts Ansible pour l'installation automatisée de MediaWiki.
- Environnement fonctionnel avec MediaWiki installé et configuré.
- Documentation détaillée sur l'utilisation et la maintenance du wiki.
- Utilisation d'Ansible comme outil d'automatisation.
- Configuration des serveurs cibles avec un compte root accessible.
- Installation de Linux (Debian) sur les serveurs avant l'exécution des scripts Ansible.
- Analyse des besoins et spécifications : semaine 1
- Développement des scripts Ansible : semaines 2-3
- Tests et validation dans l'environnement de développement : semaine 4
- Déploiement dans l'environnement de production : semaine 5
- Validation finale et livraison du projet : semaine 6
Le budget alloué à ce projet comprendra les coûts liés à l'acquisition de matériel et de logiciels, ainsi que les frais de main-d'œuvre pour le développement, les tests et le déploiement des scripts Ansible.
Le client devra valider et approuver les livrables du projet avant sa clôture. Cela inclut le bon fonctionnement du wiki, la conformité aux spécifications techniques et la qualité de la documentation fournie.
L'équipe chargée du projet comprendra un ingénieur DevOps principal et Développeur Ansible, un administrateur système. Chaque membre de l'équipe sera responsable de ses tâches assignées et devra contribuer au succès du projet.
Des risques potentiels liés au projet peuvent inclure des problèmes de compatibilité entre les composants logiciels, des erreurs dans les scripts Ansible ou des interruptions dans les services pendant le déploiement. Pour atténuer ces risques, l'équipe de projet mettra en place des plans d'action appropriés, surveillera régulièrement l'avancement du projet et prendra des mesures correctives au besoin.
II. Pourquoi ACOLAF a fait installer MediaWiki comme outil de gestion de contenu pour le compte de ses bénéficiaires ?
ACOLAF souhaite fait bénéficier à des établissements d’enseignement publique modestes la possibilité de gérer le contenu didactique grâce à MediaWiki pour la gestion et le partage de ce contenu entre l’administration et les professeurs enseignants. MediaWiki est une plateforme de gestion de contenu open source largement utilisée, surtout connue pour être le moteur derrière Wikipédia.
II-1. Aperçu des fonctionnalités de MediaWiki
MediaWiki permet de créer, modifier et organiser facilement du contenu texte et multimédia en ligne. Les utilisateurs peuvent créer des pages, les éditer en utilisant une syntaxe simple, ajouter des images, des vidéos et d'autres médias, et organiser le contenu à l'aide de catégories et de balises.
MediaWiki facilite la collaboration entre plusieurs utilisateurs grâce à son système de modification en temps réel. Les utilisateurs peuvent travailler ensemble sur le même contenu, suivre les modifications apportées aux pages, discuter des modifications via des commentaires et des discussions, et utiliser des outils de gestion des versions pour restaurer les versions antérieures des pages si nécessaire.
MediaWiki est hautement personnalisable, avec la possibilité d'ajouter des extensions pour étendre ses fonctionnalités de base. Les utilisateurs peuvent personnaliser l'apparence et le comportement du wiki en modifiant les paramètres de configuration, en créant des thèmes personnalisés et en ajoutant des fonctionnalités supplémentaires via des extensions.
MediaWiki prend en charge le multilinguisme, ce qui signifie qu'il peut être utilisé pour créer des wikis dans différentes langues et pour prendre en charge les communautés multilingues.
MediaWiki est souvent utilisé pour créer des bases de connaissances, des manuels d'utilisation, des guides de référence et d'autres types de documentation. Son format wiki facilite la création et la mise à jour de documents techniques et de contenu de support.
MediaWiki est également utilisé dans les environnements éducatifs pour créer des wikis de classe, des espaces de collaboration entre étudiants et enseignants, des ressources pédagogiques en ligne et des projets de recherche collaboratifs.
En raison de sa facilité d'utilisation et de sa capacité à organiser de grandes quantités d'informations de manière structurée, MediaWiki est utilisé comme outil de gestion des connaissances dans les entreprises, les organisations et les communautés en ligne.
II-2. Introduction à l'installation d'Ansible
Ansible est un outil d'automatisation informatique puissant qui peut configurer des systèmes, déployer des logiciels et orchestrer des tâches informatiques avancées. Dans ce guide, nous allons passer par les étapes nécessaires pour installer Ansible dans un environnement de travail virtuel.
Nous avons installé Ansible sur notre node manager. Il y a plusieurs façons d'installer Ansible :
- via les packages logiciels sur un système Linux;
- via pip de Python dans un virtualenv ou pas;
- via les sources officielles (Archives ou Git) maintenues par Red Hat.
Ansible peut être installé avec ces trois méthodes nativement sur des systèmes de type UNIX (Linux ou macOS). Pour Windows, il faudra passer par un émulateur Unix de type Cygwin pour installer Ansible. Activer Windows
Pour commencer, il est recommandé de ne pas travailler en tant qu'utilisateur root pour éviter d'éventuelles erreurs. Nous allons donc créer un utilisateur simple appelé user-ansible. Utilisez la commande suivante :
# adduser user-ansible
Après avoir exécuté cette commande, vous serez invité à entrer un mot de passe, à le confirmer, puis à fournir quelques informations supplémentaires. Une fois l'utilisateur créé, vous pouvez l'utiliser avec la commande suivante :
# su - user-ansible
Un environnement de travail virtuel est un outil Python qui permet de créer des environnements de travail virtuels isolés. C'est une pratique recommandée lorsque vous travaillez avec plusieurs projets Python qui ont des dépendances différentes. Nous avons installé Ansible dans un environnement de travail virtuel pour nous permettre de gérer facilement les dépendances et d'installer des versions spécifiques d'Ansible si nécessaire.
Pour créer un nouvel environnement de travail virtuel appelé ansible, utilisez la commande suivante :
user-ansible@node-manager:~$ virtualenv ansible
Pour activer l'environnement virtuel, vous devez activer la source :
$ source ansible/bin/activate
Notons que le prompt a changé pour indiquer que vous êtes dans l'environnement de travail virtuel ansible.
Avec l'environnement virtuel activé, nous pouvons maintenant installer Ansible. L'installation d'Ansible se fait avec pip, le gestionnaire de paquets pour Python. Utilisez la commande suivante pour installer Ansible :
(ansible) user-ansible@node-manager:~$ pip install ansible
Assurez-vous que le prompt est bien (ansible) user-ansible@node-manager:~$ avant de lancer les commandes. Cela indique que vous êtes dans l'environnement de travail virtuel ansible.
Pour vérifier que Ansible a été correctement installé, vous pouvez utiliser la commande de version d'Ansible :
(ansible) user-ansible@node-manager:~$ ansible --version
Cette commande affiche des informations sur la version d'Ansible installée et d'autres détails de configuration. Si Ansible est correctement installé, cette commande doit afficher la version d'Ansible sans erreurs.
Dans cette étape, nous avons préparé la communication avec les nodes. Il s'agit de mettre en place les prérequis pour que le node manager puisse communiquer avec les nodes et leur envoyer les commandes Ansible. Voici les étapes à suivre :
Définir un inventaire des nodes
En éditant un fichier inventaire.ini
et en ajoutant les noms des nodes :
http1
bdd1
Vérification de la connexion SSH
Pour vérifier la connexion SSH entre le node manager et les nodes :
ssh root@http1
Vérification en lançant un ping avec Ansible sur les nodes
Pour vérifier que vous pouvez communiquer avec les nodes :
ansible -i inventaire.ini -m ping http1 --user root --ask-pass
Vérification que Python est installé sur les nodes
Utilisez le module raw d'Ansible :
ansible -i inventaire.ini -m raw -a "apt install -y python3" http1 --user root --ask-pass
Création d’un simple utilisateur sur les nodes
Utilisez le module user d'Ansible :
ansible -i inventaire.ini -m user -a 'name=user-ansible password=$6$secretsalt$X5YDmUgDphPxnMkByvHbNaDcGZnNJiSz9ltgPhplH92HOR/RqgmyS.zN1' --user root --ask-pass all
Attribution des droits sudo à cet utilisateur
Avec la commande suivante :
ansible -i inventaire.ini -m user -a 'name=user-ansible groups=sudo append=yes' --user root --ask-pass all
Création d’une paire de clés SSH pour cet utilisateur
Utilisez la commande ssh-keygen
.
Pour l’automatisation du déploiement, nous avons donc créé 3 playbooks :
- Un pour installer Apache.
- Un pour installer MariaDB.
- Un pour configurer MediaWiki.
L’ordre d'exécution de ces playbooks est important, car les rôles de configuration dépendent des rôles d’installation. Les serveurs Apache et MariaDB doivent être installés avant que la configuration de MediaWiki puisse être lancée. De la même façon, la configuration de MediaWiki sur le serveur MariaDB doit être effectuée avant la configuration du serveur Apache.
Installation d'Apache
Utilisez le playbook install-apache.yml
pour automatiser l'installation d'Apache.
---
- name: Installation apache
hosts: http1
roles:
- role: apache
php_install: yes
Lancez le playbook avec la commande suivante :
$ ansible-playbook -i inventaire.ini --user user-ansible --become --ask-become-pass install-apache.yml
Installation de MariaDB
Utilisez le playbook install-mariadb.yml
pour installer MariaDB.
---
- name: Installation MariaDB
hosts: bdd1
roles:
- role: mariadb
Lancez le playbook avec la commande suivante :
$ ansible-playbook -i inventaire.ini --user user-ansible --become --ask-become-pass install-mariadb.yml
Configuration de MediaWiki
Utilisez le playbook install-mediawiki.yml
pour configurer MediaWiki.
---
- name: MediaWiki db configuration
hosts: bdd1
roles:
- role: mediawiki/confdb
- name: MediaWiki apache configuration
hosts: http1
roles:
- role: mediawiki/confapache
Exécutez le playbook avec la commande suivante :
$ ansible-playbook -i inventaire.ini --user user-ansible --become --ask-become-pass --ask-vault-pass install-mediawiki.yml
Une fois ces étapes terminées, MediaWiki sera correctement installé et configuré sur vos serveurs. Vous pouvez vérifier cela en ouvrant votre navigateur et en accédant à http://http1/mediawiki
.