Guide du programme d'installation automatisée Oracle Solaris 11 Express

Chapitre 6 Configuration de DHCP pour le programme d'installation automatisée

Le programme d'installation automatisée utilise DHCP pour indiquer l'adresse IP, le masque de sous-réseau, le routeur, le serveur DNS et l'emplacement d'une image d'initialisation à l'ordinateur client à installer.

DHCP Oracle Solaris pour le programme d'installation automatisée

Vous pouvez configurer votre serveur d'installation IA afin qu'il soit également un serveur DHCP Oracle Solaris, ou vous pouvez configurer un serveur DHCP distinct.

Si vous avez déjà configuré un serveur DHCP Oracle Solaris, vous devrez peut-être le configurer pour qu'il fonctionne avec le programme d'installation automatisée.

Configuration d'un serveur DHCP sur le serveur d'installation IA

Si vous n'avez pas configuré un serveur DHCP, vous pouvez utiliser la commande installadm create-service avec les options -i et -c pour configurer un pool d'adresses IP à utiliser avec ce service d'installation. Reportez-vous à la section Création d'un service d'installation comprenant la configuration du serveur DHCP Oracle Solaris pour obtenir un exemple. Consultez également la page de manuel installadm(1M). L'option -i définit un nouveau serveur DHCP à partir de l'adresse IP spécifiée. L'option -c définit le nombre spécifié d'adresses IP dans la table DHCP.

Configuration d'un serveur DHCP distinct

Si vous souhaitez configurer un serveur DHCP Oracle Solaris distinct, reportez-vous à la section Partie II, DHCP du System Administration Guide: IP Services. Passez ensuite à la configuration pour le programme d'installation automatisée décrite dans Configuration d'un serveur DHCP existant pour le programme d'installation automatisée.

Configuration d'un serveur DHCP existant pour le programme d'installation automatisée

Si vous n'utilisez pas les options -i et -c, la commande installadm create-service fournit des instructions vous permettant de configurer DHCP. Cette section fournit des informations supplémentaires sur la configuration d'un serveur DHCP pour le programme d'installation automatisée.

Configuration de la table Netmasks

Assurez-vous que les entrées de la table netmasks du serveur DHCP sont correctes, pour tous les réseaux pour lesquels il fournira le service DHCP.


# cat >>/etc/netmasks
192.168.0.0 255.255.255.0
# getent netmasks 192.168.0.0
192.168.0.0 255.255.255.0

Initialisation du service de serveur DHCP

Exécutez dhcpconfig(1M) pour initialiser le service SMF DHCP. La commande suivante crée un référentiel basé sur des fichiers et une macro d'hôte avec un bail par défaut d'un jour. Cette commande active également le service SMF svc:/network/dhcp-server .


# /usr/sbin/dhcpconfig -D -r SUNWfiles -p /var/dhcp
# dhtadm -P
Name           Type    Value
==================================================
example-host   Macro :Include=Locale:DNSdmain="example.com":DNSserv=192.168.0.1:
Locale         Macro   :UTCoffst=-25200:

Ajout de macros et de tables d'information réseau

Pour ajouter des macros pour chaque réseau de site, utilisez dhcpconfig pour ajouter la macro de site et renseigner les tables de réseau. L'option -t indique le routeur pour ce réseau. Vous pouvez également utiliser cette fonction pour ajouter de nouvelles informations réseau aux serveurs DHCP hébergeant les réseaux existants.


# dhcpconfig -N 192.168.0.1 -m 255.255.255.0 -t 192.168.0.1

Création et ajout d'une macro DHCP pour le programme d'installation automatisée

Pour configurer votre serveur DHCP Oracle Solaris en vue d'une utilisation avec le programme d'installation automatisée, créez une macro DHCP et utilisez dhtadm pour ajouter la macro à la table de configuration DHCP, dhcptab(4). Voir l'exemple de sortie installadm create-service dans Création d'un service d'installation sans configuration DHCP .

La première macro créée pour une architecture est la macro par défaut pour tous ses clients.

Affectation des adresses IP de client

Affectez les adresses IP de client si nécessaire.

Utilisez la commande pntadm(1M) pour ajouter les réseaux à la table de réseau DHCP, dhcp_network(4).

Vérifiez les tables de réseau :


# pntadm -L

Attribution d'un bail DHCP à un client

Attribuez au client un bail DHCP et définissez sa macro DHCP pour utiliser l'image d'installation IA correcte. Exécutez les commandes de cette section sur le serveur DHCP.

Attribution du bail DHCP

L'option -i de la commande pntadm est l'ID du client à installer. L'option -m spécifie le nom de cette macro. Dans cet exemple, le nom de la macro est le même que l'adresse MAC du client. Ceci permet d'assurer que vous n'avez qu'un bail par hôte.


# pntadm -A 192.168.0.2 -i 01C0FFEEC0FFEE -m 01C0FFEEC0FFEE \
-f "PERMANENT+MANUAL" 192.168.0.0

Vérification de la présence du bail

La valeur d'indicateurs 03 représente PERMANENT+MANUAL : le bail est permanent et le serveur DHCP ne sera pas en mesure d'attribuer une adresse différente pour le client.


# pntadm -P 192.168.0.0 | grep 01C0FFEEC0FFEE
Client ID       Flags   Client IP     Server IP      Lease Expiration  Macro           Comment
01C0FFEEC0FFEE  03      10.41.30.42   172.30.95.10   Forever           01C0FFEEC0FFEE

Allocation de la macro


# dhtadm -g -A -m 01COFFEECOFFEE \
-d ":Include=`uname -n`:BootSrvA=192.168.0.1:BootFile=install_test_ai_x86:"

Vérification de la présence de la nouvelle macro dans la table


# dhtadm -P |grep 01C0FFEEC0FFEE
01C0FFEEC0FFEE Macro :Include=example-host:BootSrvA=192.168.0.1:BootFile="install_test_ai_x86":

ISC DHCP pour le programme d'installation automatisée

Cette section décrit la configuration DHCP ISC pour servir les informations dont vous avez besoin pour les installations IA.

Configuration réseau de base

Définissez un réseau de base dans votre fichier dhcpd.conf. Dans l'exemple suivant, le réseau 192.168.0.0/24 est défini afin de servir les adresses IP comprises entre 2 et 100 avec un routeur de 192.168.0.1 :

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.2 192.168.0.100;
  option routers 192.168.0.1;
}

Configuration de DNS

De même, ajoutez les informations DNS à votre fichier dhcpd.conf. Si vous souhaitez que chaque sous-réseau servi obtienne des informations DNS différentes, placez les directives dans le bloc de sous-réseau ou, pour que tous les sous-réseaux servis soient affectés, au début du fichier.

option domain-name "example.com";
option domain-name-servers 192.168.0.1;

Configuration du serveur d'initialisation et du fichier d'initialisation

Le programme d'installation automatisée nécessite une configuration du serveur d'initialisation et du fichier d'initialisation dans DHCP. Lorsque vous démarrez un ordinateur client pour l'installation automatisée, ce client a besoin de connaître l'emplacement à partir duquel il peut obtenir un fichier d'initialisation (à partir du serveur IA) et le nom du fichier d'initialisation. Ces informations sont fournies par la commande installadm create-service lorsque vous configurez un service IA. L'exemple suivant illustre la sortie partielle d'une commande installadm create-service :

Boot server IP (BootSrvA) : 192.168.0.1
Boot file      (BootFile) : install_test_ai_x86
GRUB Menu      (GrubMenu) : menu.lst.install_test_ai_x86

En termes de DHCP ISC, le serveur d'initialisation est la directive next-server, et le fichier d'initialisation est la directive filename. Ajoutez ces directives à votre groupe de sous-réseau, comme indiqué dans l'exemple :

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.2 192.168.0.100;
  option routers 192.168.0.1;
  filename "install_test_ai_x86";
  next-server 192.168.0.1;
}

Pour un service IA SPARC, utilisez la même directive filename pour l'objet BootFile. Les installations SPARC ne nécessitent pas de directive next-server (BootSvrA).

Si vous utilisez le programme d'installation automatisée pour installer les machines x86 et SPARC, utilisez la directive DHCP ISC class pour fournir les informations de fichier d'initialisation aux clients SPARC et fournir les informations de fichier d'initialisation et de serveur d'initialisation aux clients x86. Le fait de fournir des informations spécifiques à l'initialisation dans des directives class distinctes vous permet de disposer d'un service par défaut pour chaque architecture sur le réseau.

Classe d'initialisation PXE

L'exemple suivant est une définition class pour une initialisation matérielle x86 :

class "PXEBoot" {
  option dhcp-class-identifier "PXEClient";
  filename "install_test_ai_x86";
  next-server 192.168.0.1;
}

Classe d'initialisation SPARC

L'exemple suivant est une définition class pour l'initialisation matérielle SPARC. Notez qu'une directive next-server n'est pas nécessaire pour SPARC :

class "SPARC" {
  match if ( substring (option vendor-class-identifier, 0, 5) = "SUNW." ) and not
           ( option vendor-class-identifier = "SUNW.i86pc" );
  filename "http://192.168.0.1:5555/cgi-bin/wanboot-cgi";
}

Exemple de fichier de configuration

Avec ces définitions de classe, les clients SPARC demandent un bail et obtiennent des informations spécifiques à SPARC, tandis que les clients x86 demandent et obtiennent des informations spécifiques à x86. Les exemples ci-après présentent l'intégralité du fichier dhcpd.conf :

# option definitions common to all supported networks...
option domain-name "example.com";
option domain-name-servers 192.168.0.1;

default-lease-time 600;
max-lease-time 86400;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# This is an easy way to discriminate on SPARC clients
class "SPARC" {
  match if ( substring (option vendor-class-identifier, 0, 5) = "SUNW." ) and not
           ( option vendor-class-identifier = "SUNW.i86pc" );
  filename "http://192.168.0.1:5555/cgi-bin/wanboot-cgi";
}

# This is a class to discriminate on PXE booting x86 clients
class "PXEBoot" {
  option dhcp-class-identifier "PXEClient";
  filename "install_test_ai_x86";
  next-server 192.168.0.1;
}
        
# This is a very basic subnet declaration
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.2 192.168.0.100;
  option routers 192.168.0.1;
}