Cela fait longtemps que je voudrais préparer une image virtuelle pure Debian pour le nuage élastique de calcul de chez Amazon, qui contiendrait les outils de bio-informatique que nous empaquetons au sein de Debian Med. La plupart des méthodes discutées dans le groupe ec2debian utilisent debootstrap et terminent la préparation avec des scripts externes. Étant donné que les images machine Amazon peuvent désormais démarrer avec leur noyau d'origine, j'explore l'utilisation directe de l'installeur Debian, pour mettre en place un système vierge sur un bloc élastique de stockage.

L'installeur Debian peut être démarré par GRUB et pré-configuré via un fichier téléchargé au démarrage. Dans le nuage Amazon, ce fichier peut être déposé à l'adresse http://169.254.169.254/latest/user-data avec les autres données d'instance. N'ayant que peu d'expérience, j'avance lentement sur l'automatisation de la procédure. Pour le moment, la préconfiguration n'est pas complète, mais permet au moins de lancer la console SSH de l'installeur. Dans l'idéal, il faudrait se connecter avec des clés, mais pour le moment j'utilise un mot de passe. Je coince sur le partitionnement du disque dur (No root file system is defined).

Voici quelques détails techniques. Je fais les tests sur les instances les moins chères, t1.micro (32 bits). J'ai téléchargé debian-installer sur un volume élastique de 1 Go que j'ai formatté en ext2. Ne sachant pas si son nom de périphérique sera stable (/dev/sda1 ou /dev/xvda1), j'y ai collé une étiquette, comme j'ai vu le faire dans les machines virtuelles Ubuntu.

ARCH=i386
DIST=squeeze
DI_VERSION=20110106+squeeze3
MIRROR=jp
BASEURL=http://ftp.$MIRROR.debian.org/debian/dists/$DIST/main/installer-$ARCH/$DI_VERSION/images/netboot/xen

mke2fs -L debian-installer /dev/sdb -F
mount LABEL=debian-installer /mnt/ && cd /mnt/

wget $BASEURL/initrd.gz $BASEURL/vmlinuz

mkdir -p boot/grub
cat > boot/grub/menu.lst <<__END__
default 0
timeout 3

title  Debian Installer ($DI_VERSION $ARCH)
root   (hd0)
kernel /vmlinuz root=LABEL=debian-installer ro console=hvc0 auto=true priority=critical url=http://169.254.169.254/latest/user-data
initrd /initrd.gz
__END__

Un instantané de ce volume peut ensuite être enregistré comme image machine. Le noyau à utiliser dépendra de si le système a été installé sur le volume entier ou une partition. Debian distribue des outils pour toutes ces opérations, comme euca2ools.