Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
developpement:productions:sidus4jessie [2015/07/06 17:22]
equemene s
developpement:productions:sidus4jessie [2020/08/17 15:55]
equemene
Ligne 1: Ligne 1:
-====== SIDUS  ======+====== SIDUS pour Debian Jessie ​====== 
 + 
 +<note important>​Contenu obsolète</​note>​
  
 <note warning>​Tous les éléments présents dans cette documentation,​ les morceaux de code, etc entrent dans le cadre de la licence [[http://​www.cecill.info/​index.fr.html|CeCILL]]. Il est donc nécessaire de respecter les 4 libertés fondamentales des logiciels libres pour exploiter SIDUS dans sa propre infrastructure. Si vous comptez utiliser SIDUS dans votre infrastructure,​ faites le savoir à son [[emmanuel.quemener@ens-lyon.fr|auteur]],​ Centre Blaise Pascal ou citez le !</​note>​ <note warning>​Tous les éléments présents dans cette documentation,​ les morceaux de code, etc entrent dans le cadre de la licence [[http://​www.cecill.info/​index.fr.html|CeCILL]]. Il est donc nécessaire de respecter les 4 libertés fondamentales des logiciels libres pour exploiter SIDUS dans sa propre infrastructure. Si vous comptez utiliser SIDUS dans votre infrastructure,​ faites le savoir à son [[emmanuel.quemener@ens-lyon.fr|auteur]],​ Centre Blaise Pascal ou citez le !</​note>​
Ligne 82: Ligne 84:
 ===== Préparation du système ===== ===== Préparation du système =====
  
-Nous devons préparer un peu notre système pour accueillir SIDUS. Pour cela, nous avons la main sur plusieurs services pour déployer nos clients : serveurs DHCP, TFTP, NFS. Vous entretenez ​de très bonnes relations avec votre service IT ou vous êtes assez libres pour accéder sans contraintes aux serveurs Ldap et DNS bien définis : +Nous devons préparer un peu notre système pour accueillir SIDUS. Pour cela, nous devons avoir la main sur plusieurs services pour déployer nos clients : serveurs DHCP, TFTP, NFS. Vous devez donc entretenir ​de très bonnes relations avec votre service IT ou vous êtes assez libres pour accéder sans contraintes aux serveurs Ldap et DNS bien définis :
   * le service DHCP fournit à notre client une adresse IP mais diffuse deux informations complémentaires : l'​adresse du serveur TFTP via la variable ''​next-server''​ et le nom du binaire PXE, souvent nommé ''​pxelinux.0''​.   * le service DHCP fournit à notre client une adresse IP mais diffuse deux informations complémentaires : l'​adresse du serveur TFTP via la variable ''​next-server''​ et le nom du binaire PXE, souvent nommé ''​pxelinux.0''​.
   * le service TFTP entre alors en scène. Il offre par TFTP tout le nécessaire permettant le démarrage du système : le binaire ''​pxelinux.0'',​ le noyau et le démarrage du système du client. Si nous avons besoin d'​offrir des paramètres à tel ou tel client, nous contruisons un document spécifique dont le nom sera contruit à partir de son adresse MAC (préfixé de 01 et dont les : sont remplacés par des -).   * le service TFTP entre alors en scène. Il offre par TFTP tout le nécessaire permettant le démarrage du système : le binaire ''​pxelinux.0'',​ le noyau et le démarrage du système du client. Si nous avons besoin d'​offrir des paramètres à tel ou tel client, nous contruisons un document spécifique dont le nom sera contruit à partir de son adresse MAC (préfixé de 01 et dont les : sont remplacés par des -).
   * le serveur NFS s'​invite alors dans la boucle : il va offrir la racine du système par son protocole (donc NFSroot). C'est donc dans cette racine, par exemple ''/​srv/​nfsroot/​sidus''​ que nous allons installer notre système client.   * le serveur NFS s'​invite alors dans la boucle : il va offrir la racine du système par son protocole (donc NFSroot). C'est donc dans cette racine, par exemple ''/​srv/​nfsroot/​sidus''​ que nous allons installer notre système client.
  
-De manière à installer notre première instance SIDUS de manière complètement autonome, nous avons besoin de configurer ​les différents services ​ci-dessusSur nos configurations nous utilisons ​respectivement **isc-dhcp-server**,​ **bind9**, **tftpd-hpa** et **nfs-kernel-server** ​pour les serveurs DHCP, DNS, TFTP et NFS.+Dans l'​éventualité où vous n'avez pas la main sur les services DNS, TFTP, DHCP et NFS, de manière à installer notre première instance SIDUS de manière complètement autonome, nous avons besoin de configurer ​ces différents services. ​Dans nos configurations ​suivantes, ​nous exploiterons ​respectivement **isc-dhcp-server**,​ **bind9**, **tftpd-hpa** et **nfs-kernel-server** ​comme implémentations logicielles des serveurs DHCP, DNS, TFTP et NFS.
  
 Le "​domaine"​ SIDUS dont nous allons présenter l'​installation aura les spécifications suivantes : Le "​domaine"​ SIDUS dont nous allons présenter l'​installation aura les spécifications suivantes :
Ligne 97: Ligne 98:
  
 ==== Installation de la passerelle ==== ==== Installation de la passerelle ====
 +
 +De manière à ne pas avoir à trop détailler les fichiers de configuration de chaque service, nous fournissons les fichiers définissant les services avec les paramètres ci-dessus. Ces fichiers seront téléchargés à partir d'une archive HTTP que nous définissons sous forme d'une variable d'​environnement ''​$HTTP''​ :<​code>​export HTTP=http://​www.cbp.ens-lyon.fr/​sidus/​jessie</​code>​
  
 Paramétrage des interfaces réseau Paramétrage des interfaces réseau
Ligne 104: Ligne 107:
 mv /​etc/​sysctl.conf /​etc/​sysctl.conf.orig mv /​etc/​sysctl.conf /​etc/​sysctl.conf.orig
 wget -O /​etc/​sysctl.conf ${HTTP}/​sysctl.conf wget -O /​etc/​sysctl.conf ${HTTP}/​sysctl.conf
-mv /etc/​resolv.conf /​etc/​resolv.conf.orig +</code> 
-wget -O /​etc/​resolv.conf ${HTTP}/​resolv.conf.server+ 
 +Montage de l'​interface interne 
 +<​code>​ 
 +ifup eth1
 </​code>​ </​code>​
  
Ligne 130: Ligne 136:
 # Relance du serveur # Relance du serveur
 /​etc/​init.d/​bind9 restart /​etc/​init.d/​bind9 restart
 +</​code>​
 +
 +Paramétrage des interfaces réseau
 +<​code>​
 +mv /​etc/​resolv.conf /​etc/​resolv.conf.orig
 +wget -O /​etc/​resolv.conf ${HTTP}/​resolv.conf.server
 </​code>​ </​code>​
  
 Vérification du serveur DNS Vérification du serveur DNS
-  * A la commande ''​host filer.sidus.zone''​ le serveur doit répondre+  * A la commande ''​host filer.sidus.zone ​localhost''​ le serveur doit répondre
 <​code>​filer.sidus.zone is an alias for gateway.sidus.zone. ​ <​code>​filer.sidus.zone is an alias for gateway.sidus.zone. ​
 gateway.sidus.zone has address 10.20.15.254</​code>​ gateway.sidus.zone has address 10.20.15.254</​code>​
-  * A la commande ''​host 10.20.15.254''​+  * A la commande ''​host 10.20.15.254 ​127.0.0.1''​
 <​code>​254.15.20.10.in-addr.arpa domain name pointer gateway.sidus.zone.</​code>​ <​code>​254.15.20.10.in-addr.arpa domain name pointer gateway.sidus.zone.</​code>​
  
Ligne 197: Ligne 209:
 cd /​usr/​lib/​syslinux/​modules/​bios cd /​usr/​lib/​syslinux/​modules/​bios
 cp ldlinux.c32 libcom32.c32 libutil.c32 vesamenu.c32 /srv/tftp/ cp ldlinux.c32 libcom32.c32 libutil.c32 vesamenu.c32 /srv/tftp/
 +cp /​usr/​lib/​PXELINUX/​pxelinux.0 /srv/tftp
 cd /srv/tftp cd /srv/tftp
-wget -O /etc/dhcp/dhcpd.conf ${HTTP}/​Sidus_Landscape.png+wget -O /srv/tftp/Sidus_Landscape.png ${HTTP}/​Sidus_Landscape.png
 cp /​boot/​memtest86.bin memtest86 cp /​boot/​memtest86.bin memtest86
-cp /​boot/​memtest86+.bin memtest86.bin+cp /​boot/​memtest86+.bin memtest86+
 # Importation des composants pour le boot EFI 32 bits # Importation des composants pour le boot EFI 32 bits
 cd /​usr/​lib/​syslinux/​modules/​efi32 cd /​usr/​lib/​syslinux/​modules/​efi32
Ligne 225: Ligne 238:
 </​code>​ </​code>​
  
-Paramétrage ​du menu des démarrages possibles +Paramétrage ​des menu des démarrages possibles 
-<​code>​wget -O /​srv/​tftp/​pxelinux.cfg/​default ${HTTP}/​default</​code>​+<​code>​ 
 +wget -O /​srv/​tftp/​pxelinux.cfg/​default ${HTTP}/​default 
 +</​code>​
  
 Il est déjà possible de démarrer une machine par le réseau pour tester le serveur. Dans le menu présenté, il est possible de choisir les memtest86 pour, par exemple, tester sa mémoire. Il est déjà possible de démarrer une machine par le réseau pour tester le serveur. Dans le menu présenté, il est possible de choisir les memtest86 pour, par exemple, tester sa mémoire.
Ligne 253: Ligne 268:
 wget -O /​etc/​idmapd.conf ${HTTP}/​idmapd.conf wget -O /​etc/​idmapd.conf ${HTTP}/​idmapd.conf
 wget -O /​etc/​exports ${HTTP}/​exports wget -O /​etc/​exports ${HTTP}/​exports
-wget -O /etc/fstab ${HTTP}/​fstab 
 </​code>​ </​code>​
  
Ligne 261: Ligne 275:
 echo "/home /​export/​home none bind 0 0" >> /etc/fstab echo "/home /​export/​home none bind 0 0" >> /etc/fstab
 mount -a mount -a
 +</​code>​
 +
 +Paramétrage des racines des instances SIDUS
 +<​code>​
 +mkdir -p /​srv/​nfsroot/​jessie64nfs /​srv/​nfsroot/​jessie32nfs
 </​code>​ </​code>​
  
Ligne 268: Ligne 287:
 </​code>​ </​code>​
  
-Pour le serveur NFS, sa configuration ​prend un ligne dans le fichier ​'/​etc/​exports'​. ​Icinous ouvrons ​un accès ​en lecture ​seule pour les machines dont l'IP est comprise entre 10.20.15.0 ​et 10.13.20.254 :<​code>​ +La configuration ​proposée ​dans le ''/​etc/​exports'​
-/​srv/​nfsroot/​sidus 10.20.15.0/​255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash) +  * les deux lignes permettant l'​offre de la partition utilisateur ''/​home''​ 
-</code>+    * ''/​export 10.20.15.0/​255.255.255.0(rw,fsid=0,​async,​no_subtree_check)''​ 
 +    * ''/​export/​home 10.20.15.0/​255.255.255.0(rw,​async,​nohide,​insecure,​no_subtree_check)''​ 
 +  * deux lignes correspondant à l'​offre de deux instances SIDUS : 
 +    * Instance pour système 64 bits : un partage ​en lecture pour les clients, un partage en lecture/​écriture pour le master 
 +      * ''/​srv/​nfsroot/​jessie64nfs ​10.20.15.0/255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash)''​ 
 +      * ''/​srv/​nfsroot/​jessie64nfs 10.20.15.253/​255.255.255.255(rw,​no_subtree_check,​async,​no_root_squash)''​ 
 +    * Instance pour système 32 bits un partage en lecture pour les clients, un partage en lecture/​écriture pour le master 
 +      * ''​/​srv/​nfsroot/​jessie32nfs ​10.20.15.0/​255.255.255.0(ro,​no_subtree_check,​async,​no_root_squash)''​ 
 +      * ''​/srv/​nfsroot/​jessie32nfs 10.20.15.253/​255.255.255.255(rw,​no_subtree_check,​async,​no_root_squash)''​ 
 + 
 +Les machines du réseau ''​10.20.15.0/​24''​ auront un accès en lecture seule, la machine ''​10.20.15.253''​ un accès en lecture/​écriture,​ laquelle sera très utile pour l'​administration de l'​instance.
  
 Une fois ces 4 services DNS, DHCP, TFTP et NFS configurés,​ nous pouvons installer notre Sidus complet. Une fois ces 4 services DNS, DHCP, TFTP et NFS configurés,​ nous pouvons installer notre Sidus complet.
Ligne 283: Ligne 312:
  
 Nous avons par commodité défini des variables d'​environnement correspondant à la racine de notre système ''​$SIDUS''​ et une commande permettant l'​exécution d'une commande par ''​chroot''​ avec une option particulière d'​installation de paquet. Nous avons par commodité défini des variables d'​environnement correspondant à la racine de notre système ''​$SIDUS''​ et une commande permettant l'​exécution d'une commande par ''​chroot''​ avec une option particulière d'​installation de paquet.
 +
 +Installation de ''​debootstrap''​
 +<​code>​
 +apt-get install debootstrap
 +</​code>​
  
 Pour une architecture x84_64 ou AMD64 Pour une architecture x84_64 ou AMD64
Ligne 305: Ligne 339:
 A la suite de cette commande, nous devons prendre quelques précautions : A la suite de cette commande, nous devons prendre quelques précautions :
 * normalement,​ si le paquet Debian est un service, ce dernier démarre après son installation. Nous devons donc inhiber le lancement de ce service par la définition d'un hook (''/​usr/​sbin/​policy-rc.d''​) : * normalement,​ si le paquet Debian est un service, ce dernier démarre après son installation. Nous devons donc inhiber le lancement de ce service par la définition d'un hook (''/​usr/​sbin/​policy-rc.d''​) :
-<​code ​bash>+<​code>​
 #!/bin/sh #!/bin/sh
 exit 101 exit 101
Ligne 320: Ligne 354:
 </​code>​ </​code>​
  
 +Définition du mot de passe ''​root''​ (à changer ensuite)...
 +<​code>​
 echo "​root:​MyStrongPassword"​ | sidus chpasswd echo "​root:​MyStrongPassword"​ | sidus chpasswd
 +</​code>​
  
- +Installation de paquets ​jugés ​nécessaires ​(
-Installation de paquets nécessaires +
 <​code>​ <​code>​
-sidus apt-get -y install aptitude dselect dracut dracut-network isc-dhcp-common isc-dhcp-client openssh-server locales aufs-tools firmware-linux-nonfree bridge-utils firmware-linux firmware-bnx2 dstat sysstat iftop htop iotop emacs lsof tshark mbw strace memtest86 cpuburn dbench iozone3 console-setup less vim unscd nfs-common linux-image-${ARCH} linux-headers-${ARCH}</​code>​+sidus apt-get update 
 +sidus apt-get -y install aptitude dselect dracut dracut-network isc-dhcp-common isc-dhcp-client openssh-server locales aufs-tools firmware-linux-nonfree bridge-utils firmware-linux firmware-bnx2 dstat sysstat iftop htop iotop emacs lsof tshark mbw strace memtest86 cpuburn dbench iozone3 ​psmisc ​console-setup less vim unscd nfs-common ​mlocate tshark ​linux-image-${ARCH} linux-headers-${ARCH}
 </​code>​ </​code>​
  
-Paramétrage de la localisation,​ la langue, le fuseau horaire+Paramétrage de la localisation,​ la langue, le fuseau horaire ​à partir du serveur lui même :
 <​code>​ <​code>​
 mv ${SIDUS}/​etc/​locale.gen ${SIDUS}/​etc/​locale.gen.orig mv ${SIDUS}/​etc/​locale.gen ${SIDUS}/​etc/​locale.gen.orig
 mv ${SIDUS}/​etc/​timezone ${SIDUS}/​etc/​timezone.orig mv ${SIDUS}/​etc/​timezone ${SIDUS}/​etc/​timezone.orig
 mv ${SIDUS}/​etc/​default/​keyboard ${SIDUS}/​etc/​default/​keyboard.orig mv ${SIDUS}/​etc/​default/​keyboard ${SIDUS}/​etc/​default/​keyboard.orig
-wget -O ${SIDUS}/​etc/​locale.gen ${HTTP}/​locale.gen +cp /​etc/​locale.gen ${SIDUS}/etc/​locale.gen 
-wget -O ${SIDUS}/​etc/​timezone ${HTTP}/​timezone +cp /​etc/​timezone ${SIDUS}/etc/timezone 
-wget -O ${SIDUS}/​etc/​default/​keyboard ${HTTP}/keyboard+cp /​etc/​default/​keyboard ${SIDUS}/​etc/​default/keyboard
 sidus locale-gen sidus locale-gen
 sidus dpkg-reconfigure tzdata sidus dpkg-reconfigure tzdata
Ligne 391: Ligne 427:
 Pour la résolution DNS Pour la résolution DNS
 <​code>​ <​code>​
-wget -O ${SIDUS}/​etc/​resolv.conf $HTTP/​resolv.conf+cp /​etc/​resolv.conf ${SIDUS}/etc/​resolv.conf
 </​code>​ </​code>​
  
 Pour le tuning système associé aux interfaces réseau Pour le tuning système associé aux interfaces réseau
 <​code>​ <​code>​
-wget -O ${SIDUS}/​etc/​sysctl.d/​gc.conf $HTTP/​gc.conf 
 wget -O ${SIDUS}/​etc/​sysctl.d/​gc.conf $HTTP/​gc.conf wget -O ${SIDUS}/​etc/​sysctl.d/​gc.conf $HTTP/​gc.conf
 </​code>​ </​code>​
Ligne 410: Ligne 445:
 mv ${SIDUS}/​etc/​default/​nfs-common ${SIDUS}/​etc/​default/​nfs-common.orig mv ${SIDUS}/​etc/​default/​nfs-common ${SIDUS}/​etc/​default/​nfs-common.orig
 mv ${SIDUS}/​etc/​idmapd.conf ${SIDUS}/​etc/​idmapd.conf.orig mv ${SIDUS}/​etc/​idmapd.conf ${SIDUS}/​etc/​idmapd.conf.orig
-wget -${SIDUS}/​etc/​default/nfs-common $HTTP/​nfs-common +cp /​etc/​default/​nfs-common ​${SIDUS}/​etc/​default/​nfs-common 
-wget -O ${SIDUS}/​etc/​idmapd.conf $HTTP/​idmapd.conf+cp /​etc/​idmapd.conf ${SIDUS}/etc/​idmapd.conf
 </​code>​ </​code>​
  
Ligne 431: Ligne 466:
 <​code>​ <​code>​
 cp ${SIDUS}/​etc/​security/​group.conf ${SIDUS}/​etc/​security/​group.conf.orig cp ${SIDUS}/​etc/​security/​group.conf ${SIDUS}/​etc/​security/​group.conf.orig
-sed -i "s/\#\ End/​\*;​\*;​\*;​Al0000-2400;​plugdev,​fuse,​scanner,​video,​audio,​floppy,​cdrom\n\#​\ End/g" ${SIDUS}/​etc/​security/​group.conf+sed -i "s/\#\ End/​\*;​\*;​\*;​Al0000-2400;​plugdev,​fuse,​scanner,dialout,​video,​audio,​floppy,​cdrom\n\#​\ End/g" ${SIDUS}/​etc/​security/​group.conf
 </​code>​ </​code>​
  
Ligne 465: Ligne 500:
   - utiliser un chroot avec mise en place du cordon ombilical   - utiliser un chroot avec mise en place du cordon ombilical
   - utiliser une machine (virtuelle ou pas) comme "​maître"​ de configuration   - utiliser une machine (virtuelle ou pas) comme "​maître"​ de configuration
 +
 +Pour une architecture x84_64 ou AMD64<​code>​
 +export SIDUS=/​srv/​nfsroot/​jessie64nfs
 +alias sidus="​DEBIAN_FRONTEND=noninteractive chroot ${SIDUS} $@"
 +ARCH=amd64</​code>​
 +
 +Pour une architecture i386<​code>​
 +export SIDUS=/​srv/​nfsroot/​jessie32nfs
 +alias sidus="​DEBIAN_FRONTEND=noninteractive setarch i686 chroot ${SIDUS} $@"
 +ARCH=i386</​code>​
 +===== Approche chroot simple =====
 +
 +Il suffit d'​exploiter la commande ''​sidus'':<​code>​sidus <​MaCommandeAMoi>​
 +</​code>​
 +
 +L'​alias utilisé dans l'​installation peut-être défini réglée dans son shell.
 +
 +===== Approche chroot élaborée =====
 +
 +  * établissement du cordon ombilical : <​code>​sidus mount -t proc none /proc
 +sidus mount -t sysfs sys /sys
 +mount --bind /dev/pts ${SIDUS}/​dev/​pts</​code>​
 +  * opérations de maintenance : <​code>​sidus <​MaCommandeAMoi></​code>​
 +  * coupure du cordon ombilical : <​code>​sidus umount -l /proc
 +sidus umount -l /sys
 +sidus umount -l /​dev/​pts</​code>​
 +
 +
 +===== Approche ''​master''​ =====
  
 Le ''/​etc/​exports''​ comprend l'​adresse ''​10.20.15.253''​ laquelle permet le montage de la racine en Read/Write. Il faut donc permettre le montage d'un machine et une seule en Read/Write. Le ''/​etc/​exports''​ comprend l'​adresse ''​10.20.15.253''​ laquelle permet le montage de la racine en Read/Write. Il faut donc permettre le montage d'un machine et une seule en Read/Write.
Ligne 472: Ligne 536:
 </​code>​ </​code>​
  
-Le ''/​etc/​dhcp/​dhcpd.conf''​ comprend la définition de cette machine +Le fichier ​''/​etc/​dhcp/​dhcpd.conf''​ comprend la définition de cette machine ​**master** 
- +<code>
-<conde>+
 host master { host master {
      ​fixed-address 10.20.15.253;​      ​fixed-address 10.20.15.253;​
-     ​hardware ethernet 08:00:27:9e:31:48;+     ​hardware ethernet 08:00:aa:bb:cc:dd;
      }      }
 </​code>​ </​code>​
 +
 +Il faut maintenant associer cette adresse MAC dans la configuration du serveur TFTP à un menu de démarrage spécifique.
 +<​code>​
 +wget -O /​srv/​tftp/​pxelinux.cfg/​master ${HTTP}/​master
 +cd /​srv/​tftp/​pxelinux.cfg
 +ln -s master 01-08-00-aa-bb-cc-dd
 +</​code>​
 +
 +En regardant dans le menu, nous avons ''/​srv/​tftp/​pxelinux.cfg/​master'',​ pour le lancement en 
 +<​code>​
 +LABEL master64
 +      MENU LABEL SIDUS based on Debian Jessie on x86_64 : Read/Write mode
 +      KERNEL vmlinuz-3.16.0-4-amd64.sidus
 +      MENU default
 +      APPEND console=tty1 initrd=initrd.img-3.16.0-4-amd64.sidus rd.shell ip=dhcp root=nfs:​10.20.15.254:/​srv/​nfsroot/​jessie64nfs:​vers=3,​rw,​rsize=32768,​wsize=32768,​tcp,​nolock,​noatime,​actimeo=1,​nocto,​hard,​intr bridge=sidus:​eth0 ipv6.disable=1 bnx2.disable_msi=1 intel_pstate=disable
 +</​code>​
 +
 +Les seules différences avec le démarrage par défaut sont :
 +  * suppression de ''​aufs''​ dans les options
 +  * présence de ''​rw''​ dans les options de montage du NFSROOT
  
  --- //​[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2015/07/06 17:09//  --- //​[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2015/07/06 17:09//
developpement/productions/sidus4jessie.txt · Dernière modification: 2020/08/17 15:58 par equemene