Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
developpement:productions:sidus4jessie [2015/07/06 17:43] equemene |
developpement:productions:sidus4jessie [2020/08/17 15:58] (Version actuelle) equemene |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== SIDUS ====== | + | ====== SIDUS pour Debian Jessie ====== |
+ | |||
+ | <note important>Contenu obsolète : pour une information générique sur SIDUS suivre [[developpement:productions:sidus|SIDUS]]</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-dessus. Sur 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 255: | 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 263: | 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 270: | Ligne 287: | ||
</code> | </code> | ||
- | Pour le serveur NFS, sa configuration prend un ligne dans le fichier '/etc/exports'. Ici, nous 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 285: | 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 307: | 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 322: | 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 393: | 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 412: | 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 -O ${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 433: | 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 468: | Ligne 501: | ||
- 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 ===== | ===== Approche chroot simple ===== | ||
- | Il suffit d'exploiter la commande ''sidus'' utilisée ci-dessous, donc pour une instance sur ''/srv/nfsroot/jessie64nfs'' :<code>chroot /srv/nfsroot/jessie64nfs <MaCommandeAMoi> | + | Il suffit d'exploiter la commande ''sidus'':<code>sidus <MaCommandeAMoi> |
</code> | </code> | ||
Ligne 477: | Ligne 519: | ||
===== Approche chroot élaborée ===== | ===== Approche chroot élaborée ===== | ||
- | * paramétrage de l'alias | ||
* établissement du cordon ombilical : <code>sidus mount -t proc none /proc | * établissement du cordon ombilical : <code>sidus mount -t proc none /proc | ||
sidus mount -t sysfs sys /sys | sidus mount -t sysfs sys /sys | ||
mount --bind /dev/pts ${SIDUS}/dev/pts</code> | mount --bind /dev/pts ${SIDUS}/dev/pts</code> | ||
* opérations de maintenance : <code>sidus <MaCommandeAMoi></code> | * opérations de maintenance : <code>sidus <MaCommandeAMoi></code> | ||
- | * coupure du cordon ombilical : | + | * coupure du cordon ombilical : <code>sidus umount -l /proc |
+ | sidus umount -l /sys | ||
+ | sidus umount -l /dev/pts</code> | ||