Archive for April, 2009

Chroot SSH et PTY allocation avec Debian Lenny

Saturday, April 25th, 2009

Pour mettre en place des serveurs de backup, j’utilise un script chroot-ssh.sh qui permet la construction d’un chroot minimal pour faire tourner un serveur SSH et faire du rsync. Avec la mise-à-jour vers Lenny, l’allocation PTY réalisée par SSHD change : il ne semble plus possible de mettre en place un serveur SSH sans monter PROCFS et DEVPTS. Sans cela, on rencontre les erreurs suivantes côté serveur SSH :

debug1: Allocating pty
openpty: No such file or directory
session_pty_req: session 0 alloc failed

Si uniquement DEVPTS est monté, et pas PROCFS :

debug1: Allocating pty
openpty: returns device for which ttyname fails.

Voici donc les étapes pour lancer le serveur SSH chrooté avec Debian Lenny :

#  chroot /backup/jails/myserver mount -t proc proc-chroot /proc/
#  chroot /backup/jails/myserver mount -t devpts devpts-chroot /dev/pts/
#  chroot /backup/jails/myserver /usr/sbin/sshd > /dev/null

Un exemple de migration Debian Etch->Lenny [0]

Sunday, April 19th, 2009

Dans la même optique que mes précédents exemples de migration Debian Sarge->Etch ([0], [1], [2] et [3]), je repars sur une série portant sur des migrations Debian Etch->Lenny. Je rappelle rapidement le principe : j’administre une centaine de serveurs pour plusieurs dizaines de sociétés, et la plupart vont être concernés par une migration vers Debian Lenny d’ici un an. Je vais en choisir quelques uns pour illustrer les opérations nécessaires et problèmes recontrés. Et j’incite tout le monde à faire de même afin d’avoir de multiples astuces disponibles sur le web.

Pour ce premier post, la question classique : quand faut-il migrer sa machine vers Debian Lenny ? Tout d’abord, Etch reste maintenu environ un an après la sortie de Lenny, soit jusqu’en février 2010. Il n’y a donc aucune raison d’être pressé à migrer si l’on a pas besoin de nouveaux logiciels. Et surtout, je recommande le principe de précaution, à savoir attendre un certain temps ce qui permettra d’avoir une grande quantité d’informations disponibles sur Internet (ressources Debian, moteurs de recherche, blogs). Enfin, il est important de bien planifier sa migration en fonction du métier de la société (haute/basse saison, vacances, etc.).

Évidemment, les précautions suivantes sont nécessaires : faire des essais de migration sur des serveurs de test, avoir des backups tout frais, couper les services durant la migration et bien prévenir à l’avance tous les utilisateurs et personnes concernées.

Entrons dans le vif du sujet. Au menu, un serveur web situé chez un hébergeur low-cost français. Ce serveur fait parti d’un pool de plusieurs serveurs (load-balancing via du round-robin DNS), donc il faut au préalable le désactiver et attendre que le time-to-live le rende totalement inactif. Ensuite, on reprend les Releases Notes, on modifie le sources.list et on se lance.

On s’assure que les partitions /usr et /tmp ont les bonnes options de montage:

# mount -o remount,rw /usr && mount -o remount,exec /tmp

On lance une mise-à-jour minimale :

# aptitude update && aptitude upgrade

Puis une mise-à-jour complète :

# aptitude dist-upgrade

Rien de bien complexe. Il reste à croiser les doigts pendant les opérations ci-dessus, mais si votre système est « propre », cela se passe très bien, comme souvent sur un système Debian. Il est ensuite important de lire les éventuelles instructions de mise-à-jour situées dans le fichier NEWS d’un paquet (en utilisant apt-listchanges, cela peut être affiché automatiquement).

En ce qui concerne la mise-à-jour du kernel, de mauvaises surprises sont possibles après le redémarrage. Il est notamment recommandé d’avoir un accès à la machine (accès physique, accès « rescue », etc.) pour corriger d’éventuels problèmes. Dans mon cas, l’interface réseau a été renommée de eth0 à eth1 suite à la mise-à-jour d’udev : le fichier  /etc/udev/rules.d/z25_persistent-net.rules se transforme en /etc/udev/rules.d/70-persistent-net.rules, jusqu’ici tout est normal, mais un problème surnaturel semble s’être produit, la carte e1000 (MAC=00:0c:29:65:ae:04) est « devenue » une r8168 (MAC=00:1c:c0:51:12:45) ; au final, c’est plutôt un soucis lié au matériel, enquête en cours chez l’hébergeur low-cost…

Un vrai problème s’est par contre posé avec la mise-à-jour du paquet nginx (un petit serveur web très performant). Suite à sa mise-à-jour, il ne démarre plus :

Starting nginx: 2009/04/19 20:45:26 [emerg] 28783#0: could not build the server_names_hash,
you should increase server_names_hash_bucket_size: 32

Il faut donc ajouter dans la section http {} du fichier nginx.conf :

http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;

# Necessaire depuis l'upgrade Etch->Lenny
# (ajoute le 19.06.2009 by reg)
server_names_hash_bucket_size 33;
...

Voilà pour ce premier exemple de migration. Il s’agissait d’un serveur « simple » sans installation particulière, donc assez peu de problèmes rencontrés. Les prochains exemples seront certainement un peu plus complexes !

Soirée d’avril au PLUG (Provence Linux User Group)

Wednesday, April 8th, 2009

Une fois n’est pas coutume, voici un petit compte-rendu de la dernière soirée au PLUG, le “Linux User Group” de Marseille. Les soirées se déroulent une fois par mois (souvent le 1er vendredi du mois) à partir de 19h à LaBoate, un endroit très sympatique proche du Vieux Port.

Arrivé un peu en retard, j’ai raté les premières dicussions (anisées), et je suis arrivé pour les traditionnelles pizzas. À cette occasion, certains nous ont rapporté le déroulement de la conférence de Richard Stallman l’après-midi même à Marseille. Ce dernier nous a d’ailleurs proposé de renommer notre LUG (Linux User Group) en GLUG (GNU Linux User Group), condition nécessaire à sa venue à l’une de nos réunions (!). Cette proposition n’a pas fait l’unanimité pour diverses raisons et a finalement été rejetée par les membres présents. D’autres discussions ont suivi, comme l’exploration de Marseille via  Google Maps/StreetView et OpenStreetMap, ou encore la démonstration d’un téléphone portable HTC-Dream tournant sous le fameux système d’exploitation Android.
Ensuite s’est déroulé la première édition des “Lightning Talks du PLUG”, à savoir des petites présentations de quelques minutes sur des sujets/actualités ouvertes à tout volontaire. Françoise Roure nous a tout d’abord parlé d’une Install Party pour les non-voyants en septembre à Marseille. Outre l’appel à la participation, une discussion s’est engagée sur les différents outils libres, notamment Orca ou eSpeak. Ensuite, c’est Jérémy Lecour qui a parlé de l’internationalisation (i18n) de logiciel, et nous a fait de son expérience récente avec l’internationalisation d’un projet en Ruby on Rails. Un petit débat s’est ouvert sur la terminologie d’internationalisation et de localisation, tandis que d’autres ont découvert les jeux de mot avec I18N et l10N.
Après ces petites présentations, j’ai pu mener une présentation générale sur les gestionnaires de paquets dans les distributions GNU/Linux. J’ai repris les bases, à savoir définir un paquet (code source, binaire, compilation, etc.) et l’intérêt d’un gestionnaire de paquets (installation, dépendance, suppression, mise-à-jour, etc.). Pas mal de questions ont été posées, et l’on aura sûrement l’occasion de faire des présentations sur des gestionnaires de paquets précis (APT, YUM, emerge, ports BSD, etc.) les prochains mois.
La soirée a duré fort tard (jusqu’à 3h pour les plus courageux), et un grand sujet s’est improvisé sur le microblogging. Présentation du principe, des sites en vogue (Twitter, identi.ca), débats sur l’intérêt (Microblog vs IRC !), l’infrastructure d’hébergement nécessaire, et les extensions comme l’amusant twistori. D’autres discussions se sont improvisées, par exemple sur la gestion des tâches via la messagerie et plusieurs personnes ont montré leur fonctionnement (principe du Zero Inbox, exemple avec GMAIL, flags avec Mutt, etc.).

Bref, une soirée riche en discussions comme chaque mois. Le mois prochain (vendredi 1er mai), on abordera en outre le sujet des gestionnaires de code sources (CVS, SVN, Git, etc.). Venez nombreux !