From: Charles Plessy Date: Sat, 19 Jan 2013 02:06:52 +0000 (+0900) Subject: Peaufinages. X-Git-Url: https://source.charles.plessy.org/?a=commitdiff_plain;h=c078adb19c4e3e2726fac14bf534e93133ca6410;p=source.git Peaufinages. --- diff --git "a/Debian/debi\303\242neries/installeur-debian-dans-un-nuage-2.mdwn" "b/Debian/debi\303\242neries/installeur-debian-dans-un-nuage-2.mdwn" index 7f96389e..337a2dd4 100644 --- "a/Debian/debi\303\242neries/installeur-debian-dans-un-nuage-2.mdwn" +++ "b/Debian/debi\303\242neries/installeur-debian-dans-un-nuage-2.mdwn" @@ -6,32 +6,31 @@ J'arrive enfin à créer une [[image machine de l'installeur Debian|installeur-debian-dans-un-nuage]] automatiquement, sans qu'aucune clé ou -mot de passe ne transite dans le réseau ni sur le Nuage. +mot de passe ne transite par le réseau ni dans le Nuage, et sans utiliser les +`ec2-api-tools`, qui ne sont pas libre. Merci à Eucalyptus pour avoir +implémenté l'API `--instance-initiated-shutdown-behavior` dans [[!debpkg +euca2ools]] 2.2. -Pour ce faire, je démarre une micro-instance avec un volume supplémentaire, et -je lui passe un script via [[cloud-init]], qui va télécharger l'installeur -Debian sur ce volume et éteindre la micro instance. Ensuite, j'enregistre ce -volume comme image machine. +En résumé, je démarre une micro-instance avec un volume supplémentaire, et je +lui passe un script via [[cloud-init]], qui va télécharger l'Installeur Debian +sur ce volume et éteindre la micro instance. Ensuite, j'enregistre ce volume +comme image machine. -Les images machines de l'Installeur créées ainsi peuvent être démarrées -avec une pré-configuration pour installer Debian sur un autre volume. Je -bute encore sur cette pré-configuration. Plus de détails dans un -prochain article. +Ces images machines de l'Installeur sont faites pour être pré-configurées via +les [métadonnées d'instance](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AESDG-chapter-instancedata.html) +pour installer Debian sur un autre volume. Je bute encore sur cette +pré-configuration. Plus de détails dans un prochain article. En attendant, +voici les commandes que j'utilise. -En attendant, voici les commandes que j'utilise. Mettez-les ensembles et vous -obtiendrez un script qui n'est pas du grand art, mais qui marche. +Depuis l'ordinateur local, lancer une instance sur le Nuage. J'utilise une +image Ubuntu en attendant que [[!debbug 696595]] sont réglé et que cloud-init +soit installé par défaut sur les images Debian. -Depuis l'ordinateur local, lancer une instance sur le Nuage. Pour le moment il -faut utiliser une image Ubuntu en attendant que cloud-init soit installé par -défaut sur les images Debian (http://bugs.debian.org/696595). + HELPER_AMI=ami-7609bb77 # Ubuntu 12.04 LTS Precise amd64 EBS in (Asie Nord-Est) -
-HELPER_AMI=ami-7609bb77 # Ubuntu 12.04 LTS Precise amd64 EBS in Tôkyô
-
- -On passe le script debigen-install-installer-cloud (voir plus bas). L'instance -démarre avec un volume supplémentaire de 1 GiB qui persistera après -l'extinction de l'instance. +On démarre l'instance avec un volume supplémentaire de 1 GiB qui persistera +après l'extinction de l'instance (`/dev/sdb=:1:false`). On lui passe le script +`debigen-install-installer-cloud` (voir plus bas). HELPER_INSTANCE=$( euca-run-instances \ --instance-initiated-shutdown-behavior terminate \ @@ -43,75 +42,65 @@ l'extinction de l'instance. On attend que le démarrage soit fini -
-while [ ! $(euca-describe-instances $HELPER_INSTANCE | grep INSTANCE | cut -f 6 | tee /dev/stderr) = "running" ]; do sleep 30; done
-
+ while [ ! $(euca-describe-instances $HELPER_INSTANCE | grep INSTANCE | cut -f 6 | tee /dev/stderr) = "running" ] + do sleep 30 + done On récupère le numéro du volume persistant. -
-TARGET_VOLUME=$( euca-describe-volumes |
-        grep $HELPER_INSTANCE | grep '/dev/sdb' |
-        tee /dev/stderr | awk '{print $2}')
-
+ TARGET_VOLUME=$( euca-describe-volumes | + grep $HELPER_INSTANCE | grep '/dev/sdb' | + tee /dev/stderr | awk '{print $2}') On attend que le script termine l'instance. -
-while [ ! $(euca-describe-instances $HELPER_INSTANCE | grep INSTANCE | cut -f 6 | tee /dev/stderr) = "terminated" ]; do sleep 30; done
-
- -Et enfin, on enregistre une images à partir d'un instantané du volume. -(Notez que `PV_KERNEL=aki-44992845` est pour la région de Tôkyô. - -
-# PV-Grub kernels to boot the installer (hd0)
-# See from http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/UserProvidedkernels.html
-PV_KERNEL=aki-44992845
+    while [ ! $(euca-describe-instances $HELPER_INSTANCE | grep INSTANCE | cut -f 6 | tee /dev/stderr) = "terminated" ]
+        do sleep 30
+    done
 
-TARGET_SNAPSHOT=$( euca-create-snapshot $TARGET_VOLUME |
-        tee /dev/stderr | awk '{print $2}')
+Et enfin, on enregistre une image à partir d'un instantané du volume.
 
-while euca-describe-snapshots $TARGET_SNAPSHOT | grep -q pending ; do sleep 30 ; done
-
-INSTALLER_IMAGE=$( euca-register \
+    PV_KERNEL=aki-44992845 # Démarre PV-Grub sur hd0 (Asie Nord-Est)
+    
+    TARGET_SNAPSHOT=$( euca-create-snapshot $TARGET_VOLUME |
+            tee /dev/stderr | awk '{print $2}')
+    
+    while euca-describe-snapshots $TARGET_SNAPSHOT | grep -q pending ; do sleep 30 ; done
+    
+    euca-register \
         --name test_di \
         --description test_of_debian_installer \
         --snapshot $TARGET_SNAPSHOT \
         --kernel $PV_KERNEL \
-        --architecture x86_64 |
-        tee /dev/stderr | awk '{print $2}')
-
+ --architecture x86_64 Voici le script appelé debigen-install-installer-cloud, lancé plus haut. -
-#!/bin/sh -ex
-
-mke2fs -L debian-installer /dev/xvdb -F
-mount LABEL=debian-installer /mnt/
-
-cd /mnt
-
-ARCH=amd64
-DIST=squeeze
-DI_VERSION=20110106+squeeze4+b2
-MIRROR=jp
-BASEURL=http://ftp.$MIRROR.debian.org/debian/dists/$DIST/main/installer-$ARCH/$DI_VERSION/images/netboot/xen
-
-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 DEBIAN_FRONTEND=text
-initrd /initrd.gz
-__END__
-
-halt
-
+ #!/bin/sh -ex + + mke2fs -L debian-installer /dev/xvdb -F + mount LABEL=debian-installer /mnt/ + + cd /mnt + + ARCH=amd64 + DIST=squeeze + DI_VERSION=20110106+squeeze4+b2 + MIRROR=jp + BASEURL=http://ftp.$MIRROR.debian.org/debian/dists/$DIST/main/installer-$ARCH/$DI_VERSION/images/netboot/xen + + 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 DEBIAN_FRONTEND=text + initrd /initrd.gz + __END__ + + halt