<?xml version="1.0"?>
<article><articleinfo><title>VerserLtsp</title>
<abstract><para>Construire un laboratoire LTSP dans un vserver... afin de mieux g&#xE9;rer!</para></abstract>

</articleinfo><para><inlinemediaobject><imageobject><imagedata fileref="http://virtuel.levinux.org/levinux.png"/></imageobject><textobject><phrase>levinux</phrase></textobject></inlinemediaobject> </para> <section><title>Ajouter un localhost</title><itemizedlist><listitem><para>R&#xE9;duire le netmask de <emphasis role="strong">lo</emphasis> sur la machine physique 127.0.0.1/8 &#xE0; 127.0.0.1/16 <inlinemediaobject><imageobject><imagedata width="15" fileref="/wiki/modern/img/attention.png" depth="15"/></imageobject><textobject><phrase>&lt;!&gt;</phrase></textobject></inlinemediaobject> </para></listitem><listitem><para>Cr&#xE9;er un fichier (distributions de la famille debian... pour les familles redhat et quelques autres, le fichier existe d&#xE9;j&#xE0;) /etc/modprobe.conf et y ajouter l'instruction suivante <emphasis role="strong">options dummy numdummies=5</emphasis> (on met le chiffre qu'on veut... ici, on en cr&#xE9;e 5) </para></listitem><listitem><para>On lance le module dummy<superscript><link linkend="fnref-17da3cf45480d1824089a21efaf5642b40491498-0" endterm="fndef-17da3cf45480d1824089a21efaf5642b40491498-0">1</link></superscript> </para></listitem></itemizedlist><screen><![CDATA[modprobe dummy
]]></screen><itemizedlist><listitem><para>On d&#xE9;clare une interface dummy0 dans /etc/vservers/&lt;vserver&gt;interface/&lt;id&gt; puis on met dummy0 dans <emphasis role="strong">dev</emphasis> et 127.1.0.1/24 dans <emphasis role="strong">ip</emphasis> </para></listitem><listitem><para>On relance le vserver </para></listitem><listitem><para>On modifie le fichier /etc/hosts du vserver <emphasis role="strong">localhost 127.1.0.1</emphasis> </para></listitem><listitem><para>R&#xE9;f&#xE9;rence: <ulink url="http://mirabellug.org/wikini/wakka.php?wiki=VServers">mirabellug</ulink> </para></listitem></itemizedlist></section><section><title>D&#xE9;bloquer le ssh -CX sur le vserver</title><itemizedlist><listitem><para>Ajouter dans /etc/ssh/sshd_config du vserver l'instruction suivante <emphasis role="strong"><ulink url="/X11UseLocalHost">X11UseLocalHost</ulink> no</emphasis> </para></listitem><listitem><para>Lancer xhost + sur le terminal qui appelle le vserver </para></listitem><listitem><para>On s'assure que /etc/hosts contient une ligne d&#xE9;finissant notre vserver (son adresse ip et son nom!) </para></listitem><listitem><para>R&#xE9;f&#xE9;rence: <ulink url="http://linuxeduquebec.org/wikini/wakka.php?wiki=GuiGuiVservers">Linux&#xC9;du-Qu&#xE9;bec</ulink> </para></listitem></itemizedlist></section><section><title>Permettre d'acc&#xE9;der &#xE0; chacun des vservers et &#xE0; la machine physique via ssh</title><itemizedlist><listitem><para>On ajoute dans le fichier /etc/ssh/sshd_config de chacune des machines (la machine physique et chacun des vservers) l'adresse IP sur laquelle le daemon sshd va &#xE9;couter <emphasis role="strong"><ulink url="/ListenAddress">ListenAddress</ulink> n.n.n.n</emphasis> </para></listitem><listitem><para>On relance les sshd </para></listitem><listitem><para>R&#xE9;f&#xE9;rence <ulink url="http://deb.riseup.net/vserver/preparing/">deb.riseup.net</ulink> </para></listitem></itemizedlist></section><section><title>Serveurs DHCP et NFS</title><itemizedlist><listitem><para>Pour DHCP, il faut ajouter les options CAP_NET_RAW et CAP_NET_BROADCAST dans /etc/vservers/&lt;vserver&gt;bcapabilities </para></listitem><listitem><para>Pour nfs, il y a seulement nfs-user-server qui fonctionne; on oublie nfs-kernel-server... Mais nfs-user offre de bonnes performances pour LTSP </para></listitem><listitem><para>R&#xE9;f&#xE9;rence: on consultera la <ulink url="http://www.solucorp.qc.ca/howto.hc?projet=vserver">FAQ de J. G&#xE9;linas</ulink> et celle de <ulink url="http://www.paul.sladen.org/vserver/faq/#nfs">Sladen</ulink> </para></listitem></itemizedlist></section><section><title>Activer localdev pour ltsp (disquette, cdrom et usb) dans un vserver</title><itemizedlist><listitem><para>Il faut ajouter l'option suivante dans /etc/vservers/&lt;vserver&gt;bcapabilities CAP_SYS_ADMIN afin de permettre au vserver de monter (smbmount) les fichiers partag&#xE9;s sur les terminaux. </para></listitem></itemizedlist></section><section><title>ldap</title><itemizedlist><listitem><para>La recette &#xE0; suivre pour ldap sur breezy ou debian est <ulink url="http://enterprise.linux.com/article.pl?sid=05/09/15/1930256&amp;tid=129">ici</ulink>. Il faut cependant ajouter un certain nombre de choses. </para><itemizedlist><listitem><para>Il manque une commande dans le tutoriel: apr&#xE8;s avoir cr&#xE9;&#xE9; le fichier Myuser.ldif, il faut ajouter </para></listitem></itemizedlist></listitem></itemizedlist><screen><![CDATA[ldapadd -x -D "cn=admin,dc=example,dc=org" -W -f Myuser.ldif
]]></screen><itemizedlist><listitem><para>Tout fonctionne &#xE0; merveille quand les r&#xE9;pertoires /home sont existants et qu'on ne passe pas par gdm (ou kdm ou xdm), en particulier sur LTSP; autrement, il faut quelques ajouts: </para><itemizedlist><listitem><para>Le syslog indique que gdm se plaint de deux r&#xE9;pertoires manquant: on les cr&#xE9;ee </para></listitem></itemizedlist></listitem></itemizedlist><screen><![CDATA[mkdir /var/run/nscd -p
mkdir /var/db && mkdir /var/db/nscd
]]></screen><itemizedlist><listitem><para>Il faut &#xE9;galement ajouter au fichier /etc/pam.d/common-session les deux lignes suivantes </para></listitem></itemizedlist><screen><![CDATA[session optional                pam_ldap.so
session required        pam_mkhomedir.so skel=/etc/skel/ umask=0
]]></screen><itemizedlist><listitem><para>Enfin, si l'on souhaite offir un service de courrier, on doit ajouter dans <emphasis role="strong">/etc/skel</emphasis> le r&#xE9;pertoire <emphasis role="strong">Maildir</emphasis>, contenant les r&#xE9;pertoires <emphasis role="strong">cur new tmp</emphasis> </para></listitem></itemizedlist></section><section><title>Copier un vserver</title><itemizedlist><listitem><para>On oublie cp ou scp. On me dit que tar --preserve fonctionne.... je n'ai pas eu cette veine. Voici trois solutions qui fonctionnent </para><itemizedlist><listitem><para><emphasis role="strong">vservser-copy [vserver] {hote:}[vservercopie]</emphasis> </para><itemizedlist><listitem><para>Cette commande ne fonctionne que si l'on cr&#xE9;e un lien symbolique dans <emphasis role="strong">/etc/vservers/[vserver]</emphasis> vers <emphasis role="strong">[vserver].conf</emphasis> </para></listitem><listitem><para>On ajuste ensuite dans <emphasis role="strong">/etc/vservers</emphasis> le r&#xE9;pertoire [vsevercopie]; on copie (ici on peut utiliser cp, scp ou tar)  /<emphasis role="strong">etc/vservers/[vserver]</emphasis> dans <emphasis role="strong">/etc/vservers/[vservercopie]</emphasis> et on ajuste les variables <emphasis role="strong">(interfaces/n n n... , name, uts/nodename et vdir)</emphasis> </para></listitem></itemizedlist></listitem><listitem><para><emphasis role="strong">dump 0zf {path}[nomdufichier] [vserver]</emphasis> est &#xE9;galement tr&#xE8;s bien. On r&#xE9;cup&#xE8;re avec <emphasis role="strong">restore -fr {path}[nomdufichier]</emphasis> en se mettant &#xE0; la racine / de la machine de r&#xE9;cup&#xE9;ration. </para></listitem><listitem><para>On peut &#xE9;galement copier &#xE0; distance avec la commande suivante </para></listitem></itemizedlist></listitem></itemizedlist><screen><![CDATA[rsync [vserver] -aPxvze ssh --delete --stats --numeric-ids {host:}/vservers/[vserver]
]]></screen><itemizedlist><listitem><para>R&#xE9;f&#xE9;rence : on consultera encore l'excellente FAQ de <ulink url="http://www.paul.sladen.org/vserver/faq/#rsync">Sladen</ulink> pour dump et rsync </para></listitem></itemizedlist><section><title>R&#xE9;cup&#xE9;rer un vserver de terminaux</title><itemizedlist><listitem><para>On veut r&#xE9;cup&#xE9;rer un vserver de terminaux; quels sont les fichiers &#xE0; adapter au nouvel environnement ? (tous  les chemins sont donn&#xE9;s &#xE0; partir d'une distribution de type debian) </para><itemizedlist><listitem><para>pour la config du vserver (si la configuration du r&#xE9;seau est diff&#xE9;rente...) </para><itemizedlist><listitem><para>/etc/vserver/[vserver]/interfaces/[n]/ip (et peut-&#xEA;tre dev) </para></listitem></itemizedlist></listitem><listitem><para>voir plus haut [<ulink url="#Ajouter">un localhost</ulink>] pour une interface "dummy", s'il y a lieu </para></listitem><listitem><para>pour ldap </para><itemizedlist><listitem><para>/etc/ldap/ldap.conf </para></listitem><listitem><para>/etc/ldap.secret </para></listitem><listitem><para>/etc/pam_ldap.conf </para></listitem><listitem><para>/etc/libnss-ldap.conf </para></listitem></itemizedlist></listitem><listitem><para>pour ssh </para><itemizedlist><listitem><para>On ajuste le "listen" dans /etc/ssh/sshd_config, &#xE0; la fois sur le vserver et sur la machine host </para></listitem></itemizedlist></listitem><listitem><para>pour le dhcp (cela va de soi si le nouvel environnement propose un jeu d'adresses ip diff&#xE9;rent. Et ce, qu'il soit dans le vserver de terminaux ou &#xE0; l'ext&#xE9;rieur) </para><itemizedlist><listitem><para>/etc/dhcpd3/dhcpd.conf sur la machine (virtuelle ou physique) qui h&#xE9;berge le dhcp </para><itemizedlist><listitem><para>On adapte le jeu d'adresses ip &#xE0; distribuer &#xE0; son environnement et on s'assure que "option root-path" pointe vers l'adresse du serveur ltsp. </para></listitem></itemizedlist></listitem></itemizedlist></listitem><listitem><para>pour ltsp (m&#xEA;me remarque que pour le dhcp) </para><itemizedlist><listitem><para>/opt/ltsp/i386/lts.conf </para><itemizedlist><listitem><para>On donne les bonnes adresses pour le serveur ltsp et le xdm </para></listitem></itemizedlist></listitem></itemizedlist></listitem><listitem><para>pour cups </para><itemizedlist><listitem><para>/etc/cups/cupsd.conf, si on est serveur </para></listitem><listitem><para>/etc/client.conf, si on est client </para><itemizedlist><listitem><para>REMARQUE : on ne peut lancer cups &#xE0; la fois sur la machine h&#xF4;te et sur un vserver... &#xE0; moins de trouver un "wrapper" qui fonctionne... je n'ai pas encore eu cette chance... </para></listitem></itemizedlist></listitem></itemizedlist></listitem><listitem><para>pour gdm </para><itemizedlist><listitem><para>On s'assure que le nombre de connexions simultan&#xE9;es est adapt&#xE9; &#xE0; son nouvel environnement </para></listitem></itemizedlist></listitem><listitem><para>pour /tmp </para><itemizedlist><listitem><para>On s'assure que l'espace est suffisant. Voir la rubrique <ulink url="#Monter">nfs dans un vserver et modifier le /tmp</ulink> ci-dessous </para></listitem></itemizedlist></listitem><listitem><para>Si on change de nom... </para><itemizedlist><listitem><para>Les fichiers /etc/vservers/[nouveaunom]  ../name, ../uts/nodenane, le lien symbolique ../vdir &#xE0; ajuster avec le nouveau nom dans [path_des_vservers]/vservers/[nouveaunom] </para></listitem></itemizedlist></listitem></itemizedlist></listitem></itemizedlist></section></section><section><title>Utiliser les p&#xE9;riph&#xE9;riques de la machine h&#xF4;te (le serveur physique) dans un vserver</title><itemizedlist><listitem><para>On aimerait pouvoir g&#xE9;rer l'impression directement dans un vserver et on aimerait &#xE9;galement graver des cd depuis le vserver. </para><itemizedlist><listitem><para>On doit pourvoir d&#xE9;finir les <emphasis role="strong">dev</emphasis> manquant: </para><itemizedlist><listitem><para>Ajouter CAP_MKNOD dans le fichier /etc/vservers/&lt;vserver&gt;bcapabilities </para></listitem><listitem><para>Cr&#xE9;er les dev n&#xE9;cessaires (cdrom, graveur CD et imprimante parall&#xE8;le, par exemples) </para></listitem></itemizedlist></listitem></itemizedlist></listitem></itemizedlist><screen><![CDATA[mknod /dev/hdc b 22 0
mknod /dev/hdd b 22 64
mknod /dev/lp0 c 6 0
]]></screen><itemizedlist><listitem><para>Changer les groupes </para></listitem></itemizedlist><screen><![CDATA[chwon root:cdrom /dev/hdc
chwon root:cdrom /dev/hdd
chown root:lp /dev/lp0
]]></screen><itemizedlist><listitem><para>S'assurer que les utilisateurs &#xE0; qui l'on donne des privil&#xE8;ges sur l'utilisation des p&#xE9;riph&#xE9;riques (user1, user2, etc. et cupsys) aient acc&#xE8;s aux ressources dans le fichier /etc/group. Par exemple, l'entr&#xE9;e cdrom devrait ressembler &#xE0; cela </para></listitem></itemizedlist><screen><![CDATA[cdrom:x:24:user1,user2,userN
]]></screen><itemizedlist><listitem><para>On pourrait &#xE9;galement ajouter scanner et autres p&#xE9;riph&#xE9;riques.... </para></listitem></itemizedlist></section><section><title>Configuration de cups dans un vserver</title><para>* Il m'a fallu pas mal de temps avant de comprendre qu'il ne FAUT PAS utiliser les options listen dans le fichier de config. Voici une configuration de base (tr&#xE8;s minimale) qui fonctionne parfaitement </para><screen><![CDATA[LogLevel info
TempDir /var/spool/cups/tmp
# No 'Listen' directive !
Port 631
BrowseAddress @LOCAL
BrowseDeny All
BrowseAllow @LOCAL
BrowseOrder deny,allow
<Location />
 Order Deny,Allow
 Deny From All
 Allow From @LOCAL
 Allow From 192.168.0.0/16
</Location>
<Location /admin>
 AuthType Basic
 AuthClass System
 Order Deny,Allow
 Deny From All
 Allow From 192.168.0.0/24
# Or
#  Allow From @LOCAL
</Location>]]></screen><itemizedlist><listitem><para>Cette configuration permet &#xE9;galement &#xE0; des clients externes au vserver (dans le m&#xEA;me sous-reseau) d'utiliser les ressources d'impression. On configure le script <emphasis role="strong">client.conf</emphasis> en cons&#xE9;quence </para></listitem><listitem><para>R&#xE9;f&#xE9;rence : j'ai trouv&#xE9; la solution <ulink url="http://nayco.free.fr/wiki/doku.php?id=vservers-cups">ici</ulink> </para></listitem></itemizedlist></section><section><title>Monter nfs dans un vserver et modifier le /tmp</title><itemizedlist><listitem><para>Ouf! Cette op&#xE9;ration-l&#xE0; m'a donn&#xE9; beaucoup de sueurs froides... Voici le sc&#xE9;nario </para><itemizedlist><listitem><para>Une machine host (anaconda) sur laquelle roule un vserver de terminaux (vs01) et une machine de type nas (marmotte) sur laquelle se trouve les home de m&#xEA;me qu'un serveur nfs (pas de vservers). </para></listitem><listitem><para>On monte facilement marmotte/home sur anaconda/home; on peut &#xE9;galement faire un "mount --bind" anaconda/home ...vs01/home </para></listitem><listitem><para>Si vs01 n'&#xE9;tait pas contraint d'utiliser &#xE0; son tour le portmap et nfs, &#xE7;a roulerait sans problemes (c'est d'ailleurs le cas avec /equinux/vs02 qui roule apache, mysql, postfix, imap, etc. Mais voil&#xE0; : vs01 doit lancer portmap et nfs-user-server pour faire fonctionner les terminaux; il ne peut y avoir &#xE0; la fois un portmap sur anaconda et sur anaconda/vs01. Que faire ? </para></listitem><listitem><para>La r&#xE9;ponse para&#xEE;t simple : ne pas monter marmotte/home sur anaconda/home, mais directement dans ..vs01/home (et faire un mount --bind depuis ..vs01/home vers anaconda/home, si n&#xE9;cessaire). </para></listitem><listitem><para>&#xC7;a ne monte pas sans options... (ou plut&#xF4;t, &#xE7;a monte, mais c'est hyper-hyper lent et pas utilisable avec les terminaux.!) </para></listitem><listitem><para>Apr&#xE8;s avoir fouill&#xE9; le web, j'ai enfin trouv&#xE9; une solution: on monte avec les options hard,intr,nolock. On peut m&#xEA;me mettre le montage dans /etc/vservers/vs01/fstab. Voici ce que &#xE7;a donne. </para></listitem></itemizedlist></listitem></itemizedlist><screen><![CDATA[none    /proc           proc    defaults                0 0
none    /tmp            tmpfs   size=100m,mode=1777     0 0
none    /dev/pts        devpts  gid=5,mode=620          0 0
marmotte:/mnt/storage/home   /home   nfs     hard,intr,nolock        0 0]]></screen><itemizedlist><listitem><para>R&#xE9;f&#xE9;rence: j'ai trouv&#xE9; la solution  <ulink url="http://list.linux-vserver.org/archive/vserver/msg11032.html">ici</ulink> </para></listitem><listitem><para>On remarquera que le /tmp est maintenant &#xE0; 100 megs... Par d&#xE9;faut, il &#xE9;tait seulement &#xE0; 16... pas suffisant pour 25 terminaux. J'ai pr&#xE9;sum&#xE9; (&#xE7;a reste &#xE0; v&#xE9;rifier) qu'il fallait compter de 3 &#xE0; 4 megs par terminal, quand on utilise kde et openoffice. </para></listitem></itemizedlist><table><caption/><tgroup cols="2"><colspec colname="xxx1"/><colspec colname="xxx2"/><tbody><row><entry><para>test</para></entry><entry><para>test</para></entry></row><row><entry namest="xxx0" nameend="xxx1"><para>test</para></entry></row></tbody></tgroup></table><itemizedlist><listitem><para><link linkend="fndef-17da3cf45480d1824089a21efaf5642b40491498-0" endterm="fnref-17da3cf45480d1824089a21efaf5642b40491498-0">1</link> Voici une note de bas de page </para></listitem></itemizedlist></section></article>
