Accueil > Linux & Logiciels Libres > Déploiement de socle système avec DRBL-Clonezilla > IV) Configuration serveur et clients pour le clonage
2826 visites

IV) Configuration serveur et clients pour le clonage

lundi 26 janvier 2015

Version imprimable de cet article Version imprimable

serveur

Sur le serveur

configurer le serveur DHCP :

  • /etc/dhcp/dhcpd.conf : la liste des clients pour le dhcp, indique le fichier de démarrage ("next-server")

cela peut se faire par webmin ou autre gestionnaire de table dhcp.

Section générale du fichier de configuration.
Ces paramètres globaux peuvent en fait être indiqués dans les sections réseaux.

# la durée du bail dhcp par défaut, en secondes
default-lease-time                      360000;
# la durée maximale du bail dhcp, en secondes
max-lease-time                          360000;
# le masque de sous réseau, détermine le nombre d'adresses IP possible
option subnet-mask                      255.255.252.0;
# les serveurs de résolution de nom (DNS)
option domain-name-servers        192.168.1.1,192.168.0.1;
# le nom de domaine. si le serveur est situé sur plusieurs domaines, ne pas le déclarer ici
#option domain-name                     "monreseau.fr";
ddns-update-style                       none;
# optionnel : le nom du serveur
# pour drbl-clonezilla, il doit être à drbl
server-name                             drbl;

s’il y a plusieurs réseaux pour ce serveur dhcp, il faudra déplacer la directive next-server dans une section réseau.

on laisse ensuite le code généré par DRBL, notamment :
filename = "pxelinux.0";
qui indique quel fichier de démarrage demander au serveur

Sous-sections réseaux.
Ici, on déclare 2 réseaux différents, "administration" de 192.168.8.1 à 192.168.11.254 et "formation" de 192.168.0.1 à 192.168.3.254.

# ====== Administration ======
subnet 192.168.8.0 netmask 255.255.252.0 {
   option subnet-mask  255.255.252.0;
   option routers 192.168.8.1;
   option domain-name "reseau_administratif.fr";
   # ici, comme le serveur donne des adresses a 2 réseaux, il le fait selon l'adresse MAC du poste demandeur.
   # si un poste n'a pas son adresse MAC référencée dans ce fichier, ce serveur ne lui donnera pas d'adresse.
   deny unknown-clients;

   # déclaration d'un poste
   # Poste 1
       host Poste1 {
               # l'adresse MAC du poste
               hardware ethernet XX:XX:XX:XX:XX:XX;
               # l'adresse IP donnée
               fixed-address 192.168.10.20;
       }

}

# ====== Formation ======

subnet 192.168.0.0 netmask 255.255.252.0 {
   option subnet-mask  255.255.252.0;
   option routers 192.168.1.1;
   option domain-name "reseau_formation.fr";
   # le paramètre indiquant quel serveur donnera le fichier de démarrage
   next-server 192.168.1.5;
   # ici, comme le serveur donne des adresses a 2 réseaux, il le fait selon l'adresse MAC du poste demandeur.
   # si un poste n'a pas son adresse MAC référencée dans ce fichier, ce serveur ne lui donnera pas d'adresse.
   deny unknown-clients;

       # Formation1
       host Formation1 {
               # l'adresse MAC du poste
               hardware ethernet YY:YY:YY:YY:YY:YY;
               # l'adresse IP donnée
               fixed-address 192.168.0.20;
       }
}

S’il y a plusieurs serveurs dhcp dans le même réseau, afin que celui qui réponde aux postes à cloner soit le serveur drbl, il faudra configurer le dhcp en "statique" en associant obligatoirement une adresse IP à une adresse MAC, et en refusant les postes inconnus ("deny unknown-clients"), comme configuré ci-dessus.

Le cas échéant, si le serveur le plus rapide à répondre n’est pas le serveur drbl, le poste ne pourra pas télécharger l’image de démarrage et exécuter des tâches clonezilla.

  • redémarrer le serveur DHCP afin de prendre en compte les nouveaux paramètres : service dhcpd restart

Pilote de la carte réseau des postes clients

Au cas où le module réseau du serveur ne correspond pas au matériel des postes clients, il faudra modifier leur image de démarrage drbl :
Par exemple, le module pour les cartes Marvell Yukon (PC ACER et Gateway) est sky2.
Cela peut être déterminé avec un Linux Live.

Si le module est présent sur le serveur et donc dans l’image drbl, mais pas chargé au démarrage des postes clients, il suffira de lancer la commande :
mknic-nbi -k 3.17.7-200.fc20.x86_64 -m sky2

A adapter selon le noyau (ici le 3.17.7-200 pour une Fedora 20) et le module à charger.

Cela permet de redéfinir le fichier de configuration de démarrage et dire aux clients drbl de charger ce module comme module réseau
On peut bien sûr lister plusieurs modules

Adresse du serveur NFS

En cas de plusieurs clients avec plage IP exotique, alors étant donné que les clients devront être listés après la configuration de DRBL, il faudra les ajouter manuellement dans la liste des clients NFS du serveur DHCP (drbl).

En effet, il y à un appel dans /tftpboot/node_root/sbin/init à une fonction do_nfs_mount, avec pour paramètre $nfsserver:$nfshostsdir/$IP/.

Ce fichier est téléchargé car faisant partie de l’image de démarrage dans /tftpboot, puis exécuté par le client.

Ce paramètre $nfsserver est sensé avoir été précédemment trouvé par une boucle for/if cherchant une lecture de $IP-PC dans le fichier clients-of-$IP-DHCP, si l’adresse du poste n’y est pas listée il prend l’adresse de la passerelle, sinon une adresse par défaut.

# Find NFS server
for i in $NFSSERVER_LIST; do
 # Use the clients-of-$nfsserver.txt in the common root.
 if [ -n "$(grep -Ew "$IP" /etc/drbl/clients-of-${i}.txt 2>/dev/null)" ]; then
   nfsserver="$i"
   break
 fi
done

Il faudra donc ajouter dans /tftpboot/node_root/etc/drbl/clients-of-......txt les adresses IP depuis le fichier dhcpd.conf.
Une adresse IP par ligne.

10.158.58.145
10.158.58.142
10.158.58.144
10.158.58.143
10.158.58.124
10.158.58.125
...

fichiers et répertoires importants de DRBL

  • /etc/drbl/HOST_MAC_TABLE et IP_HOST_TABLE : liste des clients pour pouvoir les sélectionner ensuite.
  • IP_HOST_TABLE est généré par le drblpush et sera donc à éditer
  • alors que HOST_MAC_TABLE est modifié par le script "parse_dhcpd_conf" qui est lancé en même temps que DRBL-Clonezilla. Il ne faudra donc pas l’éditer, car 1) ce n’est pas nécessaire puisqu’il récupère les infos à partir du fichier dhcpd.conf et 2) les informations saisies manuellement seront par conséquent écrasées au lancement de DRBL-Clonezilla.

exemple HOST_MAC_TABLE :

# Generated by DRBL script parse_dhcpd_conf
# HOSTNAME IP MAC_ADDRESS
Formation0 192.168.0.19 XX:XX:XX:XX:XX:XX
Formation1 192.168.0.20 XX:XX:XX:XX:XX:XX
Formation2 192.168.0.21 XX:XX:XX:XX:XX:XX
Formation3 192.168.0.22 XX:XX:XX:XX:XX:XX
Formation4 192.168.0.23 XX:XX:XX:XX:XX:XX
Formation5 192.168.0.24 XX:XX:XX:XX:XX:XX

exemple IP_HOST_TABLE :

# Created by DRBL (drblpush), begin
192.168.0.19   Formation0
192.168.0.20   Formation1
192.168.0.21   Formation2
192.168.0.22   Formation3
192.168.0.23   Formation4
192.168.0.24   Formation5

  • /tftpboot : le répertoire contenant l’image de démarrage (rappel : enlever les répertoires en trop dans nodes, et les sous répertoires inutiles dans node_root)
  • /tftpboot/nbi_img/pxelinux.cfg/default : configuration du menu de démarrage
  • /usr/bin/drbl-doit (anciennement /opt/drbl/bin/drbl-doit) : script pour le wake on lan (entre autre) à corriger si le masque est en 22 et non en 24.

dans ce cas :

  • après :

    IP_grp_1_3="$(LC_ALL=C echo $ihost | sed -e "s/\.[[:digit:]]*$//g")"
    iport="$(LC_ALL=C route -n | grep -E "^$IP_grp_1_3\." | awk -F" " '{print $NF}')"

  • mettre :

    if [ "$IP_grp_1_3" = "AA.BB.CC" ]; then
                  iport="ethX";
    fi

en remplaçant AA.BB.CC par les 3 premiers nombres de vos adresses IP, et ethX par l’interface côté postes (eth0, eth1...)

cette structure conditionnelle est bien sûr à répéter pour chaque AA.BB.CC différents. Par exemple, pour un masque en 22, correspondant à 4 plages de 256 (4*DD) il faudra mettre 4 boucles conditionnelles, une pour chaque "sous-plage".

  • /etc/drbl/drbl.conf (anciennement /opt/drbl/conf/drbl.conf) : fichier de configuration général de DRBL, notamment pour le compte d’administration W$ ainsi que les répertoires de /var/lib à ne pas copier au drblpush.

Compte d’administration pour les commandes SSH envoyées aux postes clients sous Windows (DRBL-Clonezilla)

# Administrator account ID in M$ windows
# This is for drbl-doit to send command to cloned M$ windows via ssh. Different language M$ windows use different ID. Ex:
# English: Administrator
# Traditional Chinese: Administrator
# France: Administrateur
# Dutch: Administrator
# Default value: Administrator
MSWIN_ADMIN_ID="Administrateur"

  • Indiquer le mot de passe de l’administrateur Windows dans 2 fichiers :
  • /usr/bin/drbl-doit (anciennement /opt/drbl/bin/drbl-doit)
    remplacer specified_passwd=$1

    # if [ -n "$specified_passwd" ]; then
    #       specified_passwd='mot_de_passe';
    # fi

  • /usr/sbin/dcs (anciennement /opt/drbl/sbin/dcs) qui est en fait un lien sur /usr/sbin/drbl-client-switch (anciennement /opt/drbl/sbin/drbl-client-switch)
    ajouter -p "mot_de_passe" aux commandes drbl-doit

    if [ "$LIST_HOST" = "on" ]; then
         drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" -h "$IP_LIST" /usr/bin/shutdown -f -r now &
    else
         drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" /usr/bin/shutdown -f -r now &
    fi


    et

    if [ "$LIST_HOST" = "on" ]; then
         drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" -h "$IP_LIST" /usr/bin/shutdown -f -s -x now &
    else
         drbl-doit -b -u $MSWIN_ADMIN_ID -p "mot_de_passe" /usr/bin/shutdown -f -s -x now &
    fi

  • /etc/sysconfig/dhcpd : la liste des interfaces surs lesquelles le serveur dhcp écoute : mettre celle où l’on veut faire du multicast en premier.
    DHCPDARGS="eth2 eth0 eth1 virbr0"

relancer le serveur DHCP si le fichier a du être modifié. service dhcpd restart

La fonction qui lit ce fichier afin de déterminer l’interface sur laquelle faire le multicast est dans /opt/drbl/sbin/ocs-functions
Il suffit de la corriger pour figer l’interface ou au contraire faire une boucle conditionnelle pour la choisir.

Par exemple, après

find_multicast_ethernet_port() {
   echo -n "Finding the $multi_broad_cast_prompt seed ethernet port... "

on pourra enlever
   for eth in `get_dhcpd_interface`; do
et après
     # keep the port for multicast to be echoed in screen
ajouter
             eth="bond0.10"
et après

        eth_for_multicast="$eth"
        echo "On multicast sur $eth"

enlever

     break
   done

et laisser la fin de la fonction

   echo "done."
   echo "Will use ethernet port $eth_for_multicast for $multi_broad_cast_prompt seed in this clonezilla server."
} # end of find_multicast_ethernet_port

La commande pour lancer le menu drbl ensuite sera /opt/drbl/sbin/dcs, qui est en fait un raccourci pour /opt/drbl/sbin/drbl-client-switch

Pour aller plus vite, il est (était) possible dans le fichier /root/.bashrc de créer un alias :

# User specific aliases and functions
alias clone='/opt/drbl/sbin/dcs'

ensuite, il suffira de lancer la commande "clone" pour lancer le menu.

L’alias sera utilisable dès la prochaine connexion console au serveur (nouveau terminal ou nouvelle connexion ssh).

clients

Sur les postes clients

1) Wake On Lan

Sous Windows, gestionnaire de périphérique, propriétés de la carte réseau

onglet « avancé »

  • capacité de réveil = « paquet magique », et seulement « paquet magique », afin d’éviter les réveils inopinés de la machine.
  • réveil après arrêt = « actif »

onglet « gestion de l’alimentation »

  • décocher "autoriser l’ordinateur à éteindre ce périphérique pour économiser l’énergie"

dans le BIOS, selon les modèles

menu Advanced BIOS Features

  • Intel EIST = enabled

menu « Power Management Setup »

  • ACPI Aware OS = enabled
  • ACPI Suspend Mode = [S3 (STR)]
  • Power on PCIE devices = enabled
  • Power on PCI = enabled
  • Deep Power Off mode = disabled

2) Boot on LAN

dans le BIOS, selon les modèles

menu « Integrated Peripherals »

  • Onboard Lan Option Rom = enabled

menu « Advanced BIOS Features »

  • mettre LAN en 1er dans la liste des médias de Boot

Répondre à cet article

Total 230912 visites depuis 3219 jours | Site réalisé par Vader[FR] | SPIP | | Plan du site | Suivre la vie du site RSS 2.0 | contact mail