Déplacement d’un compte prof sous Koxo

Comme expliqué précédemment, nous utilisons Koxo pour gérer nos comptes utilisateurs.
Mais nous avions déjà créé des comptes de professeurs avant d'avoir Koxo, et ils ne profitent pas de ses avantages...

L'idée est de créer tout nouveau compte prof directement sous Koxo, et de glisser petit à petit les anciens profs sous ce système.

Copier et supprimer

Nous voulons laisser le même login, nous sommes donc dans l'obligation de supprimer le compte avant de le créer de nouveau.

  1. Copier le répertoire « utilisateur » dans un emplacement de sauvegarde 
  2. Supprimer le répertoire « utilisateur »
  3. Dans le LDAP, supprimer le compte utilisateur

Créer le compte et restaurer les données

Sous Koxo
Dans la rubrique Professeur, créer l’utilisateur.

Attention : création du compte avec un password simple, mais avec changement obligatoire à la prochaine connexion.

Coller les données de l'enseignant dans le nouveau répertoire de l'utilisateur.

L'idéal serait d'avoir l'utilisateur à coté de nous pour modifier le password et valider la récupération de ses données.

Deployer le service SNMP par GPO

Pour superviser certaines stations sous Windows 7 avec Nagios (et Centreon en ce qui me concerne), nous avons besoin d'activer le SNMP, et de le configurer pour autoriser les bonnes communautés et adresses IP.
2 étapes à faire donc : installation si ça n'est pas la cas, et configuration.

Installation

Pour ça, je suis passé par un .bat qui se lance par GPO.

Fichier Deploy_SNMP.bat

setlocal
 set LogLocation=\serveurDeploySNMPlogs
 IF NOT "%ProgramFiles(x86)%"=="" (goto ARP64) else (goto ARP86)
 :ARP64
 reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesSNMPParameters
 if NOT %errorlevel%==1 (goto End)
 :ARP86
 reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesSNMPParameters
 if %errorlevel%==1 (goto Install) else (goto End)
 :Install
 start /wait ocsetup SNMP /quiet /norestart
 echo %date% %time% Setup ended with error code %errorlevel%. >> %LogLocation%%computername%.txt
 :End
 echo %date% %time% Setup error. >> %LogLocation%%computername%.txt
 Endlocal

Créer la GPO

Configuration ordinateur / Stratégies / Paramètres Windows / Scripts (Démarrage / fermeture)
Démarrage / Ajouter / Script name : parcourir et coller le .bat dans le dossier

Configuration

Dans la même GPO

Configuration ordinateur / Modèles d’administration / Réseau/SNMP

  1. Communautés : Activé en spécifiant la communauté "public"
  2. Gestionnaires autorisés : adresse IP du serveur Nagios

Deployer MSProject 2010 par GPO

Préparation

Créer un répertoire partagé sur un serveur (donner accès en lecture / listage / exécution aux utilisateurs authentifiés).
Copier le contenu du CD dans ce répertoire.
Créer un sous répertoire Logfiles.

Paramètrage

Modifier le  *.WW/config.xml.
Virer les signe de commentaires (<!--   -->) et compléter les lignes suivantes :

<Display Level="none" CompletionNotice="no" SuppressModal="yes" AcceptEula="yes" />
<USERNAME Value="Service Informatique" />
<COMPANYNAME Value="Votre entreprise" />

Lancer l'invite de commande.
Y faire glisser le setup.exe et y rajouter /admin, puis valider.
Choix du produit à configurer.
Modifier / adapter les éléments suivants...

Installation

Emplacement d'installation et nom de l'organisation
Nom de la Compagnie

Licences et interface utilisateurs

Clé de Licence MAK, sans les tirets !
Accepter le contrat de licence
Niveau d'affichage : Aucun

Modifier les propriétés d'installation

Ajouter :

Nom : AUTO_ACTIVATE
Valeur : 1

Fonctionalité

Définir l'état d'installation de composants à vérifier

Fichier / Enregistrer sous / Répertoire partagé sur le serveur / Dans le sous-répertoire Update
Nom du fichier : project2010.msp
Fermer le programme de paramètrage.

Déployer par GPO

Préparer la GPO

Création d'un fichier .bat
Créer un fichier deploy_project_2010.bat contenant :

setlocal
REM ***********************************************************
REM Environment customization begins here. Modify variables below.
REM ***********************************************************
REM Get ProductName from the Office product's core Setup.xml file, and then add "office14." as a prefix.
set ProductName=office14.PRJPRO
REM Set DeployServer to a network-accessible location containing the Office source files.
set DeployServer=\192.168.1.1RessourcesInfoBureautiqueProject_2010_SP1
REM Set ConfigFile to the configuration file to be used for deployment (required)
set ConfigFile=\192.168.1.1RessourcesInfoBureautiqueProject_2010_SP1PrjPro.WWconfig.xml
REM Set LogLocation to a central directory to collect log files.
set LogLocation=\192.168.1.1RessourcesInfoBureautiqueProject_2010_SP1Logfiles
REM ***********************************************************
REM Deployment code begins here. Do not modify anything below this line.
REM ***********************************************************
IF NOT "%ProgramFiles(x86)%"=="" (goto ARP64) else (goto ARP86)
REM Operating system is X64. Check for 32 bit Office in emulated Wow6432 uninstall key
:ARP64
reg query HKEY_LOCAL_MACHINESOFTWAREWOW6432NODEMicrosoftWindowsCurrentVersionUninstall%ProductName%
if NOT %errorlevel%==1 (goto End)
REM Check for 32 and 64 bit versions of Office 2010 in regular uninstall key.(Office 64bit would also appear here on a 64bit OS)
:ARP86
reg query HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall%ProductName%
if %errorlevel%==1 (goto Install) else (goto End)
REM If 1 returned, the product was not found. Run setup here.
:Install
start /wait %DeployServer%setup.exe /adminfile %DeployServer%Updatesproject2010.msp
echo %date% %time% Setup ended with error code %errorlevel%. >> %LogLocation%%computername%.txt
REM If 0 or other was returned, the product was found or another error occurred. Do nothing.
:End
echo %date% %time% Setup error. >> %LogLocation%%computername%.txt
Endlocal
  • Productname issue du .WW/setup.xml précédé de office14.
  • DeployServer : répertoire partagé
  • ConfigFile : emplacement du fichier config.xml
  • LogLocation : emplacement des fichiers log

Créer la GPO

Nom de la GPO : Delpoy Project 2010
Configuration ordinateur / Stratégies / Paramètres Windows / Scripts (Démarrage / fermeture)
Démarrage / Ajouter / Script name : parcourir et coller le .bat dans le dossier

Tester

Lier la GPO à l'unité de test qui vous intéresse
Un petit gpupdate /force dans la console.
Un test sur un PC concerné

Sources :

http://community.spiceworks.com/how_to/show/1503-how-to-deploy-office-2010-using-gpo-and-oct

Création de comptes en masse sous Koxo

Toutes les rentrées, c'est la même rengaine : il faut créer les comptes informatiques pour les nouveaux élèves et profs, déplacer les anciens élèves de classes, et conserver les élèves maintenant partis dans un endroit adéquat...
Pourquoi conserver les anciens élèves ? Car nous leurs avons fournis une adresse mail que nous aimerions leur laisser. Avoir ces élèves dans le LDAP nous permet de nous assurer de ne pas donner un identifiant déjà utilisé à une autre personne... Ce qui serait dramatique (et nous est déjà arrivé !)...

Outil

Nous utilisons un logiciel qui se nomme Koxo Administrator , qui permet la création de comptes, de dossiers, les droits qui vont bien, et des mots de passe facile à retenir.
C'est un très bon logiciel (auquel il manque la partie API de Google Apps malheureusement).

Préparation

Il nous faut une base : un fichier CSV avec tous les renseignements voulus... et travailler un peu les informations brutes, car évidement les logins ne doivent pas avoir d'accents, d'espace, être raccourcis dans certains cas et facile à retenir !
Nous partons sur des logins type : « prenom.nom »

A partir d’une feuille excel fournis par le secrétariat comportant :

  • Nom
  • Prénom
  • Date de naissance
  • Classe

Génération des logins et mails par défaut en utilisant la feuille « Génération des logins.xls »

  1. Compléter la feuille Excel initiale, et vérifier les incohérences.
  2. Enregistrer sous / Fichier CSV

Création des comptes sous Koxo

Il faut utiliser plutôt la synchronisation par CSV pour les changement d’année scolaire  : il déplace les comptes existants, et crée les nouveaux automatiquement.
Pour ne pas supprimer les anciens comptes (nous voulons les conserver) :

  • déplacer les élèves dans un groupe secondaire « Anciens élèves » avant toute opération de synchronisation
  • dans la synchronisation, cocher « Synchronisation non destructive »

Pour tous les utilisateurs, sous Koxo, dans groupe primaire correspondant :

  1. Clic droit : Importer des utilisateurs dans l’arbre (ou synchroniser les groupes secondaires) / À partir d’un fichier CSV
  2. Associer les champs
  3. Vérifier l’association des champs
  4. Suivant
  5. Vérifier les espaces groupes.
  6. Suivant (création des groupes et des utilisateurs)

Générer les étiquettes

En début d'année, idéalement le jour de la rentrée, nous donnons à nos élèves une petite étiquette comportant leur login / mot de passe, et l'adresse du site principal.

Un autre serveur...

Nous avons la bonne idée d'avoir un autre serveur en parallèle qui est censé être dans la même arborescence, et tout partager, mais qui ne le fait pas. Nous devons donc créer manuellement les comptes correspondants aussi dans l'autre serveur.

Sous Koxo du serveur 1

  1. Général / Exporter / Des utilisateurs / Au format CSV
  2. Glisser les classes correspondantes
  3. Exporter avec le modèle « Vraiment complet »
  4. Copier le fichier sur serveur 2

Sous Koxo de serveur 2

  1. Dans groupe primaire correspondant :
  2. Clic droit : Importer des utilisateurs dans l’arbre / À partir d’un fichier CSV
  3. Associer les champs
  4. Vérifier l’association des champs
  5. Suivant
  6. Vérifier les espaces groupes.
  7. Suivant (création des groupes et des utilisateurs)

Création du mail sur Google Apps

Vivement que Koxo intègre cette partie, ça sera vraiment plus simple pour nous... Appel au dev !
Au passage, si comme moi vous en avez besoin, faites leur savoir : c'est l'avantage d'avoir les dev à proximité, ils adaptent leur produit à la demande... mais il faut de la demande !

Sous Koxo du serveur 1 (car il comporte tous les utilisateurs, même ceux du serveur 2)

  1. Général / Exporter / Des utilisateurs / Au format CSV
  2. Glisser les classes correspondantes
  3. Exporter avec le modèle « Vraiment complet »

Réorganiser le fichier avec les entêtes

  • email address
  • first name (=prénom)
  • last name (=nom)
  • password

Générer un fichier CSV :

  • Iso-8859-1
  • séparateur de champs : ,
  • séparateur de texte : “

Sous Google Apps :

  1. Outils avancés
  2. Créer plusieurs utilisateurs
  3. Transfert groupé
  4. Importer et traiter le fichier csv (ne pas modifier le mot de passe des comptes existants)

Un joli affichage pour la page de listing de dossier d’Apache

Selon les restrictions de votre site, lorsque vous arrivez dans un répertoire, Apache peut vous afficher tous les fichiers et dossiers contenus dans ce répertoire.
C'est mon objectif pour monter un petit partage rapide de fichiers...

Mais l'affichage de base est vraiment moche...

L'affichage de base d'Apache
Avec un peu de .htaccess, vous pouvez imposer des fichiers html pour l'entête et la fin de page... et le CSS vous aidera à jouer sur l'apparence de votre page.
Vous ne pourrez pas modifier le contenu du listing, si ce n'est l'ordre d'affichage et la largeur des colonnes (je l'aurais bien francisé... mais j'ai pas trouvé).
Affichage personnalisé

Sécurité

Il est avant tout conseille d'interdire de lister les répertoires d'une manière générale, et de n'autoriser qu'au cas par cas le listing.
Pour interdire globalement sur tout le site, dans le httpd.conf, utiliser par exemple :

Options -Indexes

Et dans chaque répertoire que vous voulez autoriser à lister, créez un fichier .htaccess contenant uniquement :

Options +Indexes

Le mécanisme de base

A la racine du site, créez un fichier .htaccess contenant :

IndexOptions FancyIndexing FoldersFirst SuppressHTMLPreamble
IndexOrderDefault Descending Name
#
# Fichiers header et footer (2 fichiers placés dans la racine du site)
HeaderName /header.html
ReadmeName /footer.html
#
# Fichiers à ignorer dans le listing
IndexIgnore header.html footer.html favicon.ico .htaccess .ftpquota .DS_Store icons *.log *,v *,t .??* *~ *#
#
# Affichage avec des icones personnalisés (placés dans le répertoire /icons_perso à la racine du site)
DefaultIcon /icons_perso/unknown.png
# Répertoire
AddIcon /icons_perso/folder.png ^^DIRECTORY^^
# Parent directory
AddIcon /icons_perso/parent.png ..
# Icones spécifiques aux types de fichiers
AddIcon /icons_perso/text.png .txt
AddIcon /icons_perso/image.png .jpg .jpeg .jpe .png .gif
AddIcon /icons_perso/calendar.png .ics
AddIcon /icons_perso/pdf.png .pdf
AddIcon /icons_perso/zip.png .zip .rar
AddIcon /icons_perso/video.png .mpg .avi
AddIcon /icons_perso/audio.png .mp3 .wav
AddIcon /icons_perso/word.png .doc .docx
AddIcon /icons_perso/excel.png .xls .xlsx
AddIcon /icons_perso/powerpoint.png .ppt .pps .ppsx

Les fichiers sources

À la racine du site, créez les deux fichiers header.html et footer.html, et le répertoire icons_perso avec les fichiers correspondants à l'intérieur.

En ce qui me concerne, voici mon header.html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
 <head>
   <title>R&eacute;pertoire</title>
   <style type="text/css">
body {
 background: #ffffff;
 margin: 33px;
 color: #333;
 font: Arial, Helvetica;
 font-size:0.9em;
 }
h1 {
 font: 1.4em Verdana, Georgia, serif;
 background:url(/logo.png) top left no-repeat;
 line-height:35px;
 padding: 0 0 0 35px;
 }
h1 a:hover, h1 a:active {
 text-decoration: none;
 }
a:link {
 text-decoration: none;
 color: #333;
 }
a:visited {
 text-decoration: none;
 color: #333;
 }
a:hover, a:active {
 text-decoration: underline;
 color: #333;
 }
pre {
 font:  "Courier New", Courier;
 margin: 3px 0;
 color: #333;
 }
pre img {
 display: inline;
 height:16px;
 width:16px;
 }
</style>
   </head>
   <body>
      <h1>Contenu du r&eacute;pertoire</h1>

et mon footer.html :

<pre><em>&copy; &Eacute;cole La Mache</em></pre>
<pre>Contenu r&eacute;serv&eacute; &agrave; l'usage des membres de l'&Eacute;cole La Mache.</pre>
<pre><a href="http://portail.ecolelamache.org/" title="Retour au portail de l'&Eacute;cole La Mache">Retour au portail</a>
</body>
</html>

Upgrading Moodle 2.1 → Moodle 2.3 avec GIT

Je suis resté toute l'année scolaire précédente sur la version 2.1 : je n'ai pas voulu tenter le diable avec la 2.2, déjà que le passage de la 1.9 en 2.1 a perturbé quelques utilisateurs...
Par contre, les nouveautés de la 2.3 soint TRÈS alléchantes... Alors, je profite de cette fin de vacances (ou début d'année scolaire ?) pour faire la mise à jour...

NB : D'après la lecture de la doc, il est nécessaire de passer par une version 2.2 avant de passer en 2.3.
J'en profite pour tester les tâches administratives en ligne de commande !

Vérifications

  1. Vérifiez que votre serveur puisse accueillir la version 2.3 : Administration du site / Serveur / Environnement. S'il ne vous propose pas la vérification pour la version voulue, il le fera après une première mise à jour, il faudra alors retenter le coup plus tard...
  2. Vérifiez que les plugins que vous utilisez soient disponibles ou compatibles avec la version 2.3.

Sécurité avant tout

Effectuez une sauvegarde de votre Moodle.
Il est conseillé de vérifier que votre base est en bon état avant de faire un upgrade.
Passage du site en mode maintenance

cd /var/www/html/moodle
/usr/bin/php admin/cli/maintenance.php --enable

Mise à jour antérieure à l'upgrade

Pour démarrer avec quelque chose de sain...

git pull
/usr/bin/php admin/cli/upgrade.php

Passage de 2.1 en 2.2

Changement de version, puis upgrade.
git branch -a
git checkout -b local_22_STABLE origin/MOODLE_22_STABLE
/usr/bin/php admin/cli/upgrade.php

Le première ligne permet simplement de voir ce qui est disponible, elle est donc facultative.

Passage de 2.2 en 2.3

Même démarche...
git checkout -b local_23_STABLE origin/MOODLE_23_STABLE
/usr/bin/php admin/cli/upgrade.php

Update des plugins

Update des plugins avec une version compatible (dépend de la façon dont vous avez installé les plugins...).

  • soit par GIT, puis visite de la page de notification,
  • soit par upload FTP, puis visite de la page de notification.

Restauration du site

Un petit test du site, du thème... puis retour au mode production.

/usr/bin/php admin/cli/maintenance.php --disable

Au cas où...

Une petite sauvegarde avec un Moodle updaté fonctionnel ?

Sources :
http://docs.moodle.org/23/en/CLI

Réparer la base de donnée Moodle

Au fur et à mesure des updates / upgrades, la base de donnée Moodle a tendance à se perturber...
Deux choses sont à faire après une upgrade importante (changement de version).

Sous Moodle

Des outils de vérification de base sont déjà présents dans Moodle. Allez dans Administration du site / Développement / Expérimental / Éditeur XMLDB
En haut de page vous avez :
  • Vérifier les index
  • Vérifier les valeurs par défaut
  • Vérifier les longs entiers (bigints)
  • Vérifier les clefs extérieures

Ces outils permettent de vérifier des éléments essentiels de la base.

Ils ne font qu'un check et proposent des solutions si nécessaire.

Sous MySQL

Vous pouvez vérifier / réparer les bases, et les optimiser pour gagner en performance avec les commandes :
CHECK TABLE
REPAIR TABLE
OPTIMIZE TABLE
Sur votre serveur; connectez vous à Mysql et sélectionnez la base Moodle :
mysqld
USE moodle
Puis lancer la vérification (et la réparation si nécessaire), puis l'optimisation des tables importantes et sensibles :
CHECK TABLE mdl_course_sections;
CHECK TABLE mdl_forum_posts;
CHECK TABLE mdl_log;
CHECK TABLE mdl_sessions;
CHECK TABLE mdl_backup_controllers;
CHECK TABLE mdl_grade_grades_history;
CHECK TABLE mdl_backup_log;
OPTIMIZE TABLE mdl_course_sections;
OPTIMIZE TABLE mdl_forum_posts;
OPTIMIZE TABLE mdl_log;
OPTIMIZE TABLE mdl_sessions;
OPTIMIZE TABLE mdl_backup_controllers;
OPTIMIZE TABLE mdl_grade_grades_history;
OPTIMIZE TABLE mdl_backup_log;

Il existe une méthode un peu plus brutasse : vérifier et optimiser toutes les tables de la base Moodle...

Dans l'invite de commande, tapez :

mysqlcheck --auto-repair --database moodle
mysqlcheck --optimize --database moodle

Ou alors carrément et monstrueusement brutasse : toues les tables de toutes les bases...

mysqlcheck --auto-repair --all-databases
mysqlcheck --optimize --all-databases

 

Installation de SPIP par Git

Illustration sur un Ubuntu, avec LAMP et Git déjà installés.

Récupération des sources, puis choix de la version.

cd /var/www/
sudo git clone http://git.spip.org/spip.git/
sudo chown -R www-data:www-data spip/
cd spip
sudo git checkout spip-2.1
sudo git pull

Installation du site

  1. Avec un navigateur, se rendre sur la page http://localhost/spip/ecrire
  2. Choix de la langue.
  3. Configuration de la BDD.
  4. Configuration de l'utilisateur de base.

Sources :
http://core.spip.org/projects/spip/wiki/#SPIP-sous-Git-comment-ça-marche-