vendredi 16 mars 2012 (), par
Lorsque n postes issus du déploiement d’un socle commun vont redémarrer, ils auront tous les mêmes paramètres, ceux du poste ayant servi à faire le socle.
Il y aura alors un nom en double sur le réseau, ce qui est un peu gênant. De plus, si les postes sont configurés en IP fixe et non en DHCP, il y aura également une adresse IP en double, ce qui l’est encore bien plus.
De même pour les partages, liens, groupe de travail...
Il faudra donc au redémarrage du poste un "script" de personnalisation, qui va terminer l’installation (du socle commun) en l’adaptant au poste.
Il existe pour cela drbl-winroll (en anglais) pour personnaliser le poste (nom de groupe, nom de machine...).
Ce logiciel inclut cygwin, un serveur ssh, permettant d’envoyer au poste des commandes à distance (reboot, shutdown...)
Info : lors de l’installation de winroll, il ne sera pas utile de sélectionner newsid.
drbl-winroll se chargera de la configuration "réseau" du poste : nom de station et groupe de travail, en fonction de l’adresse MAC indiquée dans C :\cygwin\drbl-winroll-config\hosts.
exemple fichier winroll.conf :
ici, le nom "par défaut" du groupe de travail est "SalleB".
le nom de la station sera changé par winroll, et le nom du groupe en utilisant un fichier de configuration winroll.conf différent par groupe.
# on indique le fichier de référence pour le nom à personnaliser et la manière de le faire : en se basant sur l'adresse MAC
HN_WSNAME_PARAM = /RDF:C:\cygwin\drbl_winroll-config\hosts.conf /DFK:$MAC
# le nom du groupe pour ce poste. en réalité, il y a plusieurs fichiers winroll.conf, un par salle. un script de personnalisation permet de les changer selon le nom du poste, lui-même changé par un premier fichier de configuration d'hôtes winroll.
WG_WSNAME_PARAM = SalleB
# faut il renommer le poste ou non
IF_AUTOHOSTNAME_SERVICE = y
# comment l'adresse ip est elle configurée. ici, en dhcp, et non par winroll
CONFIG_NETWORK_MODE = dhcp
le fichier hosts.conf, est lui "générique" :
ici, les adresses MAC sont indiquées sans séparateur
# Salle B RDC
XXXXXXXXXXXX = Formation0
XXXXXXXXXXXX = Formation1
XXXXXXXXXXXX = Formation2
XXXXXXXXXXXX = Formation3
# Salle A 1er
XXXXXXXXXXXX = Formation4
XXXXXXXXXXXX = Formation5
Il sera possible d’écrire ensuite un script bat pour, par exemple, en fonction du début du nom de la station, définir un groupe de travail différent, mettre des liens aux partages en fonction des salles et le reste de la configuration (clé Italc pour gestion des postes stagiaires par le formateur, etc).
Exemple de déroulement de personnalisation :
Exemple de script batch de personnalisation, lancé au démarrage :
@echo off
cls
rem on récupère le nom de la machine, via un fichier temporaire
hostname > hn.txt
set /P nom=< hn.txt
rem effacement du fichier temporaire ensuite
del /F /Q hn.txt
rem echo Le nom d'hote est %HOSTNAME%
rem echo Nom = %nom%
rem on récupère la base du nom de la station, sans son numéro. exemple, "SalleB" au lieu de "SalleB01"
set nombase=%nom:~0,-2%
rem echo Groupe = %nombase%
rem en fonction du nom récupéré, on en déduit la salle et on va au bloc de personnalisation correspondant
rem ici, on met le nom en minuscules pour faire le test
if /I %nombase%==salleb (goto salleb)
if /I %nombase%==sallea (goto sallea)
if /I %nombase%==sallec (goto sallec)
pause
rem si le nom ne correspond à aucune salle, on ne fait rien et on va directement à la fin
goto fin
rem =============================================================================
rem Salle B
rem =============================================================================
:salleb
echo Salle B
rem si un des fichiers post-personnalisation existe déjà, la personnalisation a déjà été faite, et donc on ne la refait pas à chaque démarrage.
if exist "C:\Documents and Settings\All Users\Bureau\Partage_Salle_B.lnk" goto fin
rem ------------------- Nom de groupe ------------------------------
rem echo on copie le fichier de configuration de winroll "salleb" qui contient le bon nom de groupe
del /F /Q "C:\cygwin\drbl_winroll-config\winroll.conf"
copy /Y "C:\cygwin\salleb\winroll.conf" "C:\cygwin\drbl_winroll-config"
rem ------------------- Partage (lecteur) ---------------------------------
rem montage du partage r‚seau
rem net use \\AA.BB.CC.DD\partage_salleb
rem ------------------- Partage (lien) --------------------------------
rem ou copie du lien
rem effacement anciens liens si socle générique créé à partir d'un poste d'une autre salle
del /F /Q "C:\Documents and settings\All Users\Bureau\Partage_salleA.lnk"
del /F /Q "C:\Documents and settings\All Users\Bureau\Partage_salleC.lnk"
del /F /Q "C:\Documents and Settings\All Users\Menu D‚marrer\Partage_salleA.lnk"
del /F /Q "C:\Documents and Settings\All Users\Menu D‚marrer\Partage_salleC.lnk"
rem echo "copie du lien"
copy /Y "C:\cygwin\salleb\Partage_Salle_B.lnk" "C:\Documents and Settings\All Users\Bureau\"
rem ###########################################################################
rem /!\ l'accent pose problème ici
rem Editer avec la commande dos edit ou mettre C:\DOCUME~1\ADMINI~1\MENUDM~1
copy /Y "C:\cygwin\salleb\Partage_Salle_B.lnk" "C:\Documents and Settings\All Users\Menu D‚marrer\"
rem ###########################################################################
rem -------------------- Italc (clé) --------------------------------
rem copie de la clé pour ITALC
echo "effacement clé"
del /F /Q "C:\Program Files\iTALC\keys\public\teacher\key"
echo copie cle
copy /Y "C:\cygwin\salleb\key" "C:\Program Files\iTALC\keys\public\teacher"
break
goto fin
rem =============================================================================
rem Salle A
rem =============================================================================
:sallea
echo Salle A
rem si un des fichiers post-personnalisation existe déjà, la personnalisation a déjà été faite, et donc on ne la refait pas à chaque démarrage.
if exist "C:\Documents and Settings\All Users\Bureau\Partage_sallea.lnk" goto fin
rem ------------------- Nom de groupe ------------------------------
rem echo on copie le fichier de configuration de winroll "sallea" qui contient le bon nom de groupe
del /F /Q "C:\cygwin\drbl_winroll-config\winroll.conf"
copy /Y "C:\cygwin\sallea\winroll.conf" "C:\cygwin\drbl_winroll-config"
rem ------------------- Partage (lecteur) ---------------------------------
rem montage du partage r‚seau
rem net use \\AA.BB.CC.DD\partage_salleA
rem ------------------- Partage (lien) --------------------------------
rem ou copie du lien
rem effacement anciens liens si socle générique créé à partir d'un poste d'une autre salle
del /F /Q "C:\Documents and settings\All Users\Bureau\Partage_Salle_B.lnk"
del /F /Q "C:\Documents and settings\All Users\Bureau\Partage_salleC.lnk"
del /F /Q "C:\Documents and Settings\All Users\Menu D‚marrer\Partage_Salle_B.lnk"
del /F /Q "C:\Documents and Settings\All Users\Menu D‚marrer\Partage_salleC.lnk"
rem echo "copie du lien"
copy /Y "C:\cygwin\sallea\Partage_salleA.lnk" "C:\Documents and Settings\All Users\Bureau\"
rem ###########################################################################
rem /!\ l'accent pose problème ici
rem Editer avec la commande dos edit ou mettre C:\DOCUME~1\ADMINI~1\MENUDM~1
copy /Y "C:\cygwin\sallea\Partage_salleA.lnk" "C:\Documents and Settings\All Users\Menu D‚marrer\"
rem ###########################################################################
rem -------------------- Italc (clé) --------------------------------
rem copie de la cl‚ pour ITALC
echo "effacement clé"
del /F /Q "C:\Program Files\iTALC\keys\public\teacher\key"
echo copie cle
copy /Y "C:\cygwin\sallea\key" "C:\Program Files\iTALC\keys\public\teacher"
break
goto fin
rem =============================================================================
rem Salle C
rem =============================================================================
:sallec
...
...
...
:fin
Ce script batch pourra être transformé en exécutable avec bat2exe, puis l’exécutable créé comme service démarrant avec le PC, au lieu du démarrage de la session.
Ainsi, la personnalisation du poste pourra être entièrement automatisée.
Important : pour que les postes Windows puissent accepter des commandes ssh venant du serveur drbl - et donc automatiques - il faudra mettre la clé publique ssh du serveur dans la liste des clés ssh autorisées sur les postes.
Dans le fichier C :\cygwin\home\Administrateur\.ssh\authorized_keys du poste, il faudra mettre le contenu du fichier /root/.ssh/id_rsa.pub du serveur
Les comptes Administrateur (pour Windows) et root (pour le serveur drbl) peuvent bien sûr être changés.
toutefois, il est conseillé de lancer l’outil drbl du serveur avec le compte root, notamment pour le wake-on-lan.
Ainsi, le serveur enverra des commandes, sans besoin de passer par une authentification login/mot de passe, ce qui est fastidieux et risque de plantage si l’on veut envoyer des commandes à plusieurs postes en même temps.
L’authentification se fera par échange de clés.
En cas de changement d’un poste (ajout/retrait/échange), il faudra indiquer la nouvelle adresse MAC et/ou retirer l’ancienne :
sur le serveur, éditer les fichier
/etc/dhcp/dhcpd.conf
/etc/drbl/HOST_MAC_TABLE
/etc/drbl/IP_HOST_TABLE
sauf si une machine en remplace une autre en gardant l’adresse IP et le nom.sur le socle des postes, éditer le fichier C :\cygwin\drbl-winroll-config\hosts, puis sauvegarder le nouveau socle.