]> source.charles.plessy.org Git - source.git/commitdiff
Peaufinages.
authorCharles Plessy <https://launchpad.net/~plessy>
Sat, 19 Jan 2013 02:06:52 +0000 (11:06 +0900)
committerCharles Plessy <https://launchpad.net/~plessy>
Sat, 19 Jan 2013 02:06:52 +0000 (11:06 +0900)
Debian/debiâneries/installeur-debian-dans-un-nuage-2.mdwn

index 7f96389e877ab402258afef2f9abd0f0076d440b..337a2dd45a998bd3694acdf56a0b55f28e10909c 100644 (file)
@@ -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)
 
-<pre>
-HELPER_AMI=ami-7609bb77 # Ubuntu 12.04 LTS Precise amd64 EBS in Tôkyô
-</pre>
-
-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
 
-<pre>
-while [ ! $(euca-describe-instances $HELPER_INSTANCE | grep INSTANCE | cut -f 6 | tee /dev/stderr) = "running" ]; do sleep 30; done
-</pre>
+    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.
 
-<pre>
-TARGET_VOLUME=$( euca-describe-volumes |
-        grep $HELPER_INSTANCE | grep '/dev/sdb' |
-        tee /dev/stderr | awk '{print $2}')
-</pre>
+    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.
 
-<pre>
-while [ ! $(euca-describe-instances $HELPER_INSTANCE | grep INSTANCE | cut -f 6 | tee /dev/stderr) = "terminated" ]; do sleep 30; done
-</pre>
-
-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ô.
-
-<pre>
-# 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}')
-</pre>
+        --architecture x86_64
 
 Voici le script appelé debigen-install-installer-cloud, lancé plus haut.
 
-<pre>
-#!/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
-</pre>
+    #!/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