Détection et copie d’une machine

mardi 27 janvier 2009
par  f
popularité : 30%

Il y a deux façons d’ajouter une nouvelle machine dans la base JeDDLaJ : la laisser s’insérer seule à son premier démarrage ou dupliquer les informations d’une machine semblable.

Détection : la signature matérielle

Lorsqu’une machine boote sous JeDDLaJ, elle interroge la base de données pour connaître son état en cherchant l’entrée correspondant à son nom DNS dans la table des ordinateurs. Si son nom n’y figure pas, un script de détection est exécuté sur la machine afin d’entrer les informations suivantes dans la base :

- configuration réseau : nom DNS (FQDN), nom netbios, adresse IP, adresse MAC et masque de sous-réseau. Le nom netbios assigné est le nom DNS (sans le nom de domaine) ;
- caractéristiques constructeur : marque, modèle et numéro de série ;
- mémoire : quantité, type et occupation des slots ;
- processeur : nombre, type, fréquence et socket ;
- stockage de masse : type (disque dur, CD, DVD, ZIP,...), taille (pour les disques durs), connectique (IDE ou SCSI) et périphérique Linux associé, déterminé par sa place occupée sur le contrôleur. Les disques SATA sont assimilés aux SCSI.
- composants matériels : carte vidéo, carte réseau, pont pci... ;
- signature : MD5 calculé à partir des identifiants des composants matériels.

La majorité de ces informations retrouvées par des fonctions Rembo-C est indispensable pour le déploiement et peut être modifiée via l’interface JeDDLaJ. La signature joue un rôle très important car elle permet d’identifier de façon univoque une architecture matérielle : une signature correspond à une seule architecture matérielle, et une architecture matérielle correspond à une seule signature (bijection). Ainsi pour les systèmes d’exploitation qui nécessitent une image par architecture matérielle, la signature servira de critère de concordance entre une image et une architecture (voir Les images de base : création/insertion).
Sauf que tout s’écroule lorsqu’on découvre que la relation qui lie une signature à une architecture matérielle n’est pas une bijection :
- dans le calcul de la signature l’ordre de détection des composants sur le bus PCI intervient : deux machines ayant les mêmes composants mais détectés dans un ordre différent n’ont pas la même signature ;
- la détection des composants sous Rembo 2 est souvent incomplète. De fait la signature est fausse et deux machines différentes peuvent avoir une même signature si elles ont en commun n composants et que seuls ces n composants sont détectés.

Plusieurs signatures pour une même architecture

Déjà, il faut être sûr qu’il s’agit bien d’architectures identiques. Pour vous en assurer, vous pouvez par exemple utiliser le menu "Examiner machines" et parcourir les composants qui sont classés par ordre alphabétique de types de composants. Si vous êtes sûr qu’il s’agit bien de mêmes architectures, plusieurs façons de contourner ce problème s’offrent à vous :

- la moins propre est de modifier directement dans la base (via phpmyadmin par exemple) la signature dans la table ordinateurs. Vous choisissez une signature (celle qui revient le plus fréquemment pour cette architecture) et vous remplacez celles qui dû être identiques par celle-ci ;
- la deuxième consiste à conserver les multiples signatures et à associer une même image de base à ces différentes signatures. Pour cela, il suffit de suivre la procédure d’insertion d’une nouvelle image de base (reportez-vous à l’article Les images de base : ajout/édition/suppression).
- une autre est d’éviter que cela se produise en devançant l’auto-insertion de la machine dans la base par une copie : voir chapitre suivant pour plus de détails ;
- enfin, la dernière repose sur un calcul de signature indépendant de l’ordre des composants sur le bus PCI. Pour utiliser ce type de signature il faut positionner la variable compatibilite_rembo à false dans le fichier preferences.rbc. Attention : dans la mesure où il n’existe par encore de possibilité de passer d’un type de signature à l’autre, il est vivement recommandé de laisser compatibilite_rembo à true .

Détection incomplète sous Rembo 2

Heureux possesseurs de Rembo 2, vous avez dû vous apercevoir que bien souvent la liste des composants détectés n’est pas exhaustive. Cette version du logiciel ne connaissant plus d’évolution, trois possibilités s’offrent à vous :
- acheter la dernière version de Rembo ;
- insérer les composants manquants à la main via le menu "Ajout composants" de la zone HWC (voir La zone HWC Part II) : Attention : ceci ne modifie pas la signature ;
- activer la nouvelle feature de la version 1.6IBE+ : la détection par une mini distribution Linux.

Cette nouvelle fonctionnalité de JeDDLaJ a été développée par Roland Abi Ramia dans le cadre d’un stage de première année à l’ESIL. Elle consiste à charger une distribution minimale de Linux capable de détecter les composants d’une machine et de les communiquer à JeDDLaJ. Chargée sous forme de Ramdisk depuis Rembo, afin de s’affranchir de toute installation sur le disque dur, cette distribution se compose :
- d’un noyau ne contenant que ce qui est nécessaire à un fonctionnement en réseau. Consultez régulièrement le site pour récupérer la dernière version de ce noyau ;
- d’un système de fichiers contenant :

  • l’utilitaire lscpi modifié : 2 nouvelles options -j et -r retournant respectivement, sous forme de tableau Rembo-C, la liste des composants ordonnée par bus_pci et par id_vendor:id_device.
  • l’utilitaire netclnt permettant de communiquer exclusivement avec un serveur Rembo 2.

Pour utiliser cette détection à la place de celle réalisée par les fonctions Rembo-C, dans le fichier preferences.rbc :
- positionner le booléen linux_detection à true ;
- indiquer le mot de passe du serveur Rembo dans la variable netclnt_password ;
- indiquer dans HardwareDetectionDir le répertoire dans lequel la distribution Linux va stocker temporairement le résultat de la détection. Ce répertoire doit alors exister sous l’arborescence global du serveur Rembo.
L’instanciation à true de la variable compatibilite_rembo permettra de générer des signatures de type Rembo, donc dépendante de l’ordre de détection sur le bus PCI (option -r de l’utilitaire lspci modifié).

Copie d’une machine

Lorsque vous recevez 15 nouveaux PC identiques pour équiper une salle, il n’est pas nécessaire de les faire tous démarrer une première fois pour qu’ils s’insèrent dans la base. Il est même recommandé de ne pas le faire, car :
- vous allez être peut-être confronté au problème de signatures multiples (voir plus haut) ;
- vous allez devoir répéter certaines opérations de configurations autant de fois qu’il y a de machines. À partir de la version 1.6IBE+, presque toute modification est possible sur une sélection de machines. Cependant la copie reste plus simple dans ce cas précis.

Qu’est-ce que la copie machine ?

Une copie machine consiste à dupliquer dans la base toutes les entrées d’une machine, dite source, en remplaçant son nom DNS par le nom DNS d’une nouvelle machine, dite destination (rappelons que le nom DNS joue le rôle de clef primaire dans la base JeDDLaJ). Seuls les champs spécifiques tels que le numéro de série, l’adresse MAC, etc... ne sont pas instanciés au moment de la copie, mais au premier démarrage de la machine. Par conséquent :
- la machine destination ne doit pas déjà exister dans la base ;
- il faut être sûr qu’il s’agit bien de machines en tous points identiques : on copie l’intégralité des informations de la machine source ;
- la copie permet de renseigner plus que sur le matériel qui compose la machine destination : elle crée aussi l’appartenance aux groupes, la configuration logicielle, etc...

Comment fait-on une copie machine ?

Après avoir cliqué sur le menu "Copier Machine" :
- sélectionner la machine source, celle qui sert de modèle, dans la liste des machines connues de la base ;
- explorer éventuellement la machine choisie pour vérifier qu’il s’agit d’une bonne source. Les paramètres écrits en italique sont ceux qui ne peuvent être copiés car spécifiques ;
- indiquer le nom DNS de la nouvelle machine dans le champs texte "Destination" ; puis taper sur entrée ;
- si le nom DNS entré n’est pas dans la base, un bouton "Copier" apparaît et permet de valider l’opération.

Il est possible de réaliser plusieurs copies en une seule saisie de nom DNS en utilisant une syntaxe particulière. Elle permet d’indiquer un intervalle qui sera utilisé pour générer des noms DNS contenant une valeur numérique. L’intervalle est indiqué entre crochets ; la borne inférieure peut être préfixée d’un nombre zéro indiquant le formatage numérique. Exemples :
- pour copier machine1 vers machine2 à machine10 : machine[2-10] ;
- pour copier machine-1-salle-A.net vers machine-2-salle-A.net à machine-10-salle-A.net : machine-[2-10]-salle-A.net ;
- pour copier machine-001-salle-A.net vers machine-002-salle-A.net à machine-100-salle-A.net : machine-[002-100]-salle-A.net.

Mise en pratique

Reprenons l’exemple de la nouvelle salle de 15 nouveaux PC identiques. Après avoir renseigné votre serveur DHCP :

  1. démarrez une des machines ;
  2. utilisez le menu "Modifier Machine" pour configurer l’affichage, l’affiliation Windows , faire le partitionnement, l’intégrer à un groupe,... ;
  3. utilisez le menu "Modifier configuration logicielle" pour installer les distributions et les logiciels ;
  4. copier cette machine en 14 autres via le menu "Copier machine", soit en 14 saisies de noms, soit en une seule si les noms DNS utilisent une valeur numérique incrémentale.
  5. démarrez vos 15 machines. Remarque : pour pouvoir utiliser le réveil par le réseau (voir Démarrage des machines : paramètres et wake-on-lan), il faut au préalable remplir les champs adresse IP, adresse MAC et masque de sous-réseau de chaque machine.

Brèves

12 février 2009 - JeDDLaJ passe sur SourceSup à partir de la version 1.6IBE+

La communauté JeDDLaJ manquait jusqu’alors cruellement de certains services et moyens de (...)

12 février 2009 - 11/2/2009 : La version 1.6 IBE+ est disponible !!!

Ça y est. Après tant de mois (18 à peu près...) de gestation, d’hésitations, de :wq et autres (...)

12 février 2009 - JeDDLaJ gagne le concours DEVA => nouvelles fonctionnalités pour vous !!!

JOIE !!! BONHEUR !!! FIERTÉ !!!
JeDDLaJ remporte le concours DEVA (DEVeloppements (...)

9 juillet 2007 - Précision importante sur la compatibilité MySQL 5 de JeDDLaJ 1.4IBE

Dans le cas d’un serveur Rembo sous Windows, 2 moyens pour pouvoir utiliser MySQL 5 :
soit (le (...)

9 juillet 2007 - Déjà le SP1 pour JeDDLaJ 1.4IBE : désormais TPMfOSd-ready !!!

Description
Ce service pack n’apporte principalement qu’une amélioration... mais de taille... (...)