2222 visites

V) Personnalisation des postes post-clonage

vendredi 16 mars 2012 (), par Vader[FR]

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 :

  • les postes démarrent, tous même nom et même groupe de travail. Les adresses ip, en dhcp, sont différentes
  • winroll se lance, et selon l’indication de winroll.conf, met le groupe à "SalleB", puis va chercher le nom de la station en fonction de son adresse MAC dans le fichier hosts.conf
  • si le nom de la station ne correspond pas à ce qu’il devrait y avoir dans le fichier hosts.conf, winroll le change et redémarre la station.
  • le script batch de personnalisation voit le nom de la station, et en fonction du début du nom, efface le fichier winroll.conf d’origine (avec un groupe de travail unique "par défaut") pour mettre à la place un fichier winroll.conf correspondant à la salle, avec un groupe de travail adapté. D’autres tâches peuvent par ailleurs être exécutées.
  • au redémarrage, winroll se lance (encore), change (si besoin) le nom du groupe de travail d’après son nouveau fichier winroll.conf personnalisé, puis voit que le nom de la station correspond à ce qu’il devrait être.

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.

Mise à jour du socle

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.

Répondre à cet article

Total 436896 visites depuis 4633 jours | | SPIP | | Plan du site | Suivre la vie du site RSS 2.0