VMoodle


VMoodle est une infrastructure non standard gérée à partir d'un bloc, et permettant de mettre en place et de piloter un déploiement multiple de Moodle par virtualisation et sur une seule base de code.

Son utilisation est adéquate pour simplifier la maintenance de plusieurs plates-formes d'équipement similaire ou très proches.

Le procédé de virtualisation rend la configuration technique initiale de Moodle dynamique, afin de pouvoir commuter automatiquement de base de données et de répertoire de stockage de fichiers selon le nom de domaine d'accès à la plate-forme.

Les plates-formes virtualisées par ce mode sont totalement indépendantes en gestion et ne partagent aucune données. Il est par contre tout à fait possible d'urbaniser un groupe de telles plates-formes en utilisant le réseau Moodle (MNET) pour obtenir un ensemble cohérent de sites servant une grande institution.

Installation de la virtualisation

Prérequis

Le bloc VMoodle fournit un service complexe de virtualisation et d'administration réseau. La plupart des contraintes liées à l'architecture 1.9 (manques de la couche MNET ou des infrastructures de bloc) ont été levées avec l'architecture 2.x. Une seule contrainte permettant de garantir la stabilité réseau d'une constellation de Moodle cohérente en MNET n'a pu être levée encore :

  • Les réseaux de Moodle constitués par le VMoodle peuvent largement tirer parti de nouveaux services distribués basés sur XMLRPC. Le bloc assure une rotation automatique des clefs SSL entre les Moodle, afin de garantir la stabilité à long terme du réseau de confiance. Moodle standard ne supporte pas encore cette stabilité. [1]

Conditions d'environnement

Le bloc VMoodle virtualise les plates-formes à partir du même serveur Web. Sur Apache la résolution des hôtes Moodle virtualisés peut être réalisé simplement par un Aliasing dans la configuration du serveur :

  <VirtualHost WWW.XXX.YYY.ZZZ >
  ServeName monmoodlemaitre.mondomaine.org
  ServerAlias monvmoodle.mondomaine.org
  DocumentRoot /chemin/vers/moodle
  ...
  </VirtualHost>

Il est possible également de généraliser la reconnaissance des hôtes par un aliasing "wildcard" :

  <VirtualHost WWW.XXX.YYY.ZZZ >
  ServerName monmoodlemaitre.mondomaine.org
  ServerAlias *.mondomaine.org
  DocumentRoot /chemin/vers/moodle
  ...
  </VirtualHost>

Si le domaine mondomaine.org est défini avec une résolution en "wildcard DNS" (*.mondomaine.org), alors la constitution de nouveaux satellites Moodle virtuels ne demandera aucune configuration d'environnement ultérieure.

Installation du bloc

Le bloc s'installe d'abord comme un bloc Moodle standard :

  1. Décompacter le bloc dans le répertoire 'blocks' de l'installation de Moodle
  2. Allez à la page de notification d'administration pour installer logiquement le bloc.

puis un deuxième fichier de configuration doit être créé dans le répertoire :

  blocks/vmoodle/vconfig.php

à partir du fichier modèle :

  blocks/vmoodle/vconfig-dist.php

Ce fichier de configuration fournit une configuration parallèle du commutateur d'instances, avant que la configuration de service ne soit stabilisée.

Pour implanter la virtualisation, il faut modifier le fichier config.php principal afin d'exécuter dans l'ordre :

  1. La configuration physique principale (complete avec DB et définition des diverses racines). Si possible ajouter l'ancienne définition de "dirroot" qui a été différée dans le setup de Moodle.
  2. L'appel à la virtualisation
  3. L'appel au fichier setup.php d'initialisation de Moodle

Voici un exemple de séquence minimale :

  unset($CFG);
  global $CFG;
  $CFG = new stdClass();
  
  $CFG->dbtype    = 'mysqli';
  $CFG->dblibrary = 'native';
  $CFG->dbhost    = '127.0.0.1';
  $CFG->dbname    = 'moodle';
  $CFG->dbuser    = 'dbuser';
  $CFG->dbpass    = 'XXXXXXXXXX';
  $CFG->prefix    = 'mdl_';
  $CFG->dboptions = array (
    'dbpersist' => 0,
    'dbsocket' => 0,
  ); 
  
  $CFG->wwwroot   = 'http://mon.site.fr';
  $CFG->dataroot  = '/root/vers/données';
  $CFG->dirroot  = '/root/vers/moodle';
  $CFG->admin     = 'admin';
  
  $CFG->directorypermissions = 0777;
  
  // this allows some vmoodle enabled CLI scripts to get basic configuration 
  // before switching to vmoodle virtual configuration
  if (isset($CLI_VMOODLE_PRECHECK) && $CLI_VMOODLE_PRECHECK == true){
      $CLI_VMOODLE_PRECHECK = false;
      return;
  }
  require_once $CFG->dirroot.'/blocks/vmoodle/vconfig.php';
  
  require_once(dirname(__FILE__) . '/lib/setup.php');

Services du bloc VMoodle

Services de gestion de la "ferme de Moodle"

  • Hook de virtualisation implantable dans le fichier 'config.php'
  • Gestion du déploiement de plate-formes virtuelles à partir d'un Moodle maître de réseau
  • Photographie de plate-forme (snapshot) pour créer des modèles de déploiement
  • Déploiement à la demande
  • Déploiement en réseau Moodle

Services de super-administration réseau

La multiplication des plates-forme pose toujours un problème important d'administration et d'augmentation de la complexité de gestion. Le bloc VMoodle intègre une infrastructure de super-administration réseau permettant de lancer des commandes réparties sur les différentes plates-formes virtuelles télé-administrées par la plate-forme maître. Ce dispositif est extensible.

  • Distribution de commandes SQL sur tous les nœuds
  • Comparaison de réglage de rôles entre nœuds
  • Copie de feuilles de capacités entre nœuds
  • Installation ou mise à jour massive de plugins sur un réseau de plates-formes

Accès aux services de super-administration

L'accès à ces services se fait par le lien "Administrer" qui se trouve en bas du bloc "Fermes de Moodle". Trois onglets sont disponibles :

  • Gestion des instances et du déploiement : liste les nœuds et permet de les activer/désactiver, prendre une photo d'un nœud, supprimer un nœud, ...
  • Super-administration : un ensemble d'actions qui peuvent être réalisées sur toutes les plateformes en une fois, dont la comparaison et la modification des rôles.
  • Stratégie de services : Cet onglet permet de définir un masque d'ouverture (abonnement/publication) qui sera appliqué aux nouvelles plates-formes déployées à partir de l'infrastructure de gestion des instances.

Ancienne documentation

| Dépôt Git de référence

Espace de travail projet officiel

Déploiement "en masse" de multiples Moodle

La version à partir de 2.4 contient un script permettant de construire automatiquement de nombreuses instances de Moodle à partir d'un fichier CSV.

  # Fichier CSV de définition
  #
  vhostname;vtemplate;name;shortname;description;vdbtype;vdbhost;vdblogin;vdbpass;vdbname;vdbpersist;vdbprefix;vdatapath;mnet;services;<extensions de configuration>

Voir le Détail des champs CSV de la déclaration de Moodle virtuels pour une information complète sur le format. Vous y trouverez des détails sur la façon d'injecter des configurations propre à chaque instance.

Une fois le fichier de déclaration de VMoodle constitué, vous pouvez lancer une génération grâce à la commande :

  sudo -uwww-data /usr/bin/php <moodleroot>/blocks/vmoodle/cli/bulkcreatenodes.php --nodes=<chemin vers la nodelist>

si vous désirez seulement vérifier la syntaxe et la conformité de votre fichier de déclaration, mais sans exécuter réellement la création de Moodles, alors ajoutez l'option --lint à la ligne de commande :

  sudo -uwww-data /usr/bin/php <moodleroot>/blocks/vmoodle/cli/bulkcreatenodes.php --nodes=<chemin vers la nodelist> --lint

La création de Moodles peut s'effectuer par recopie d'une plate-forme modèle. Il suffit pour cela de donner le nom d'un "template" disponible dans les modèles de plates-formes enregistrées dans VMoodle. N'importe quelle instance de plate-forme peut être "snapshottée" pour servir de modèle.

Roadmap

La version Moodle 2.0 de VMoodle a été élue aux objectifs de continuité technologique du projet ENT Libre 2.0 porté par ATOS Origin et soutenu par la DEGESCO (ministère de l'Education Nationale).

La feuille de route évolutive de ce composant prévoit le renforcement des commandes de superadministration

  • Synchronisation multi-instance des tables d'autorisation d'attribution de surcharge et de changement rôles (en cours)
  • Synchronisation multi-instance des activations de plugins
  • Synchronisation multi-instance des sucharges linguistiques (fichiers de lanques locaux)

Il prévoit aussi la publication et l'évolution des rapports statistiques globaux multi-instances (Rapport VMoodle / report_vmoodle)