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.
  1. Analyser les besoins spécifiques des bénéficiaires de ACOLAF.
  2. Étudier les recommandations et les bonnes pratiques d'installation de MediaWiki.
  3. Concevoir les scripts Ansible pour automatiser le déploiement de l'infrastructure.
  4. Tester les scripts d'installation dans un environnement de développement.
  5. 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.
  1. Analyse des besoins et spécifications : semaine 1
  2. Développement des scripts Ansible : semaines 2-3
  3. Tests et validation dans l'environnement de développement : semaine 4
  4. Déploiement dans l'environnement de production : semaine 5
  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.

Introduction à MediaWiki et Ansible

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.