#!/bin/bash # /////////// PARTIE DE DONNEES CONFIDENTIELLES ET PRIVEES ( voir espace sécurité Amazon ) # EC2_PRIVATE_KEY=/samba/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem EC2_CERT=/samba/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem EC2_USER_ID=xxxx-xxxx-xxxx EC2_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX EC2_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # # /////////// PARTIE DE DONNEES CONFIDENTIELLES ET PRIVEES ( voir espace sécurité Amazon ) # /////////// Nom de version compilation et date de compilation # NOM_VERS=debian_base_i386_squeeze_602_10Go COMPILATION_DATE=30062011 # # /////////// FIN DE CONFIGURATION PERSONNALISEE echo echo clear echo echo echo -en "\033[0;37mWelcome - Bienvenue.\033[0m\n" echo echo echo Ce script a pour but de : echo echo Construire - Compiler - Uploader sur S3 - Enregister une AMI EC 2 - Construire un volume EBS - Enregistrer un EBS en AMI. echo echo AMI = Amazon Machine Image ... EBS = Elastic Block Storage ... S3 = Simple Storage Service echo echo Le script considere que Squeeze Linux et une image 2.6.32-5-686 ou 2.6.32-5-xen-686 est ou sont installees sur la machine locale. echo echo echo -en "\033[0;37mVisitez mon site : http://cloud-installation.info/\033[0m\n" echo echo echo Licence Apache v2. Script gratuit. 30 juin 2011. Marc Fiasse. echo echo http://marcfiasse.com/editeurs/cloud/ec2/ echo # echo echo # # How to create an ... AMAZON MACHINE IMAGE ( AMI ) for EC 2 Amazon ! ( DEBIAN SQUEEZE 6.0.2 ) # # # Mon image a été réalisée sur un DURON 1500 sur mon réseau ethernet local. Donc, pas besoin d une machine de course. # # Le but de ce mémo, est de fournir l info pour partir d une machine personnelle fraichement installée sous SQUEEZE 6.0.2 , # # créer une image système chrootée, la transférer sur l espace de stockage S3, créer l instance EC 2, et enfin la lancer. # # Après, vous pouvez voir mes scripts d installation serveur Cloud : voir mon site : http://marcfiasse.com/ # # A noter qu à ce stade de l image, on ne peut faire que de Lancer, Détruire, ou Rebooter l instance EC 2. # # Pas encore de Start Stop, d archivage, mais, je regarde désormais pour les volumes EBS et le comment faire ! # # # Etape numero 1 ( en démarrant de rien ) # # # Installer Debian Squeeze suivant la procédure de mon site ( 1ère partie ) : http://debian-install.info/ # # Ne pas installer donc les serveurs, ect ... juste la base + ssh + samba. # # Lorsque l accès au PC linux est établi par ssh sur votre réseau local et via putty sur le poste Windows, # # installer Samba, et peut être sécuriser l accès SSH par un certificat. # # Samba va permettre de créer un partage sur votre réseau local, et ainsi récupérer localement # # les clés qui ont été téléchargées sur le site Amazon. # # ( Voir l espace sécurité sur le panel Amazon : certificat X509, clé secrète, ect ... ) # # Ces clés pourraient aussi être transférées sur le PC linux par un support tel que disquette, cd, par exemple ... # # En tous cas, ... pas par FTP sur un espace perso, puis les récupérer par un wget ! :-) # # Bon, maintenant, allez ! ... à l essentiel ! :) # # # Etape numero 2 # # # Installer l image linux XEN sur la machine locale si elle n existe pas ! # # Pour lister les différentes images : apt-cache search linux-image # # Prerequisites VERS_6=$(uname -r) VERSIE_6=2.6.32-5-xen-686 VERSIO_6=2.6.32-5-686 if [[ $VERSIE_6 == $VERS_6 ]]; then echo echo -en "\033[0;36mOK boot Linux Version 2.6.32-5-xen-686\033[0m\n" echo else echo -en "\033[0;36mInstallation du noyau linux-image-2.6.32-5-xen-686\033[0m\n" echo y > /etc/yes3.txt echo if [[ $VERS_6 == $VERSIO_6 ]]; then echo aptitude install linux-image-2.6.32-5-xen-686 < /etc/yes3.txt echo echo -en "\033[1;32mInstallation du noyau linux-image-2.6.32-5-xen-686 ... Fait\033[0m\n" echo echo -en "\033[1;32mRelancer le script apres le reboot ... ( dans 8 sec ) \033[0m\n" echo sleep 1 echo 7 . sleep 1 echo 6 . sleep 1 echo 5 . sleep 1 echo 4 . sleep 1 echo 3 . sleep 1 echo 2 . sleep 1 echo 1 . sleep 1 reboot sleep 15 echo else echo echo -en "\033[0;33mProbleme de version de base Linux ... Le Script est arrete\033[0m\n" echo fi echo fi if test -r /samba/; then echo echo -en "\033[0;36mOK repertoire /samba/ existe\033[0m\n" echo else sleep 2 echo echo -en "\033[0;33mInstaller Samba, puis relancer ce script. Voir le site http//debian-install.info/\033[0m\n" echo echo exit fi if test -f /samba/cert*; then echo echo -en "\033[0;36mOK cle cert* decouverte dans /samba/\033[0m\n" echo else echo echo -en "\033[0;33mTransferer la cle cert* dans /samba/ , puis relancer ce script\033[0m\n" echo echo exit fi if test -f /samba/pk*; then echo echo -en "\033[0;36mOK cle pk* decouverte dans /samba/\033[0m\n" echo else echo echo -en "\033[0;33mTransferer la cle pk* dans /samba/ , puis relancer ce script\033[0m\n" echo echo exit fi sleep 1 echo # /////////// PARTIE DE DONNEES MODIFIABLES POUR LE SCRIPT # # # chemins des fichiers du script CHEMIN_IMG=/mnt/ami CHEMIN_INSTALL_EC2_TOOLS=/home/ec2 REP_IMG=/home # version java JAV_R=1.6.0.26 # Disque # EC2_RAMDISK=ari-7d0d2509 LANG_REG=frBE # # # /////////// FIN DE PARTIE DE DONNEES MODIFIABLES POUR LE SCRIPT CHOIX_R=1 echo echo echo -en "\033[0;44mMenu ZONE du Bucket (indiquer un choix) \033[0m\n" echo -en "\033[0;44m--------------------------------------- \033[0m\n" echo -en "\033[0;44m \033[0m\n" echo -en "\033[0;44m1 - Zone EU (Standard - Ireland) \033[0m\n" echo -en "\033[0;44m2 - Zone US (Standard - East US) \033[0m\n" echo -en "\033[0;44m3 - Zone US (West US) \033[0m\n" echo -en "\033[0;44m2 - Zone AP (ap-southeast) \033[0m\n" read CHOIX_R if [[ $CHOIX_R == 1 ]]; then echo EC2_REGION=EU EC2_REGION1=EU REGION_AMA=https://eu-west-1.ec2.amazonaws.com EC2_AKI=aki-4deec439 echo fi if [[ $CHOIX_R == 2 ]]; then echo EC2_REGION=US EC2_REGION1=US REGION_AMA=https://us-east-1.ec2.amazonaws.com EC2_AKI=aki-407d9529 echo fi if [[ $CHOIX_R == 3 ]]; then echo EC2_REGION=us-west-1 EC2_REGION1=US-W REGION_AMA=https://us-west-1.ec2.amazonaws.com EC2_AKI=aki-99a0f1dc echo fi if [[ $CHOIX_R == 4 ]]; then echo EC2_REGION=ap-southeast-1 EC2_REGION1=AP REGION_AMA=https://ap-southeast-1.ec2.amazonaws.com EC2_AKI=aki-13d5aa41 echo fi if [[ $CHOIX_R != 4 && $CHOIX_R != 3 && $CHOIX_R != 2 && $CHOIX_R != 1 ]]; then echo echo echo echo Erreur : il faut un choix 1 ou 2 ou 3 ou 4 ... Relancer le script et faire un choix valide echo echo exit echo fi echo -en "\033[0;44mNom du Bucket correspondant a $EC2_REGION :\033[0m\n" read EC2_BUCKET echo -en "\033[0;36mNom du Bucket : \033[0m$EC2_BUCKET" echo echo # nom de la version EC2_AMI_NAME=$NOM_VERS\_$EC2_REGION1\_$LANG_REG\_$COMPILATION_DATE # NB : nom de la version : Elle apparait sous la reference $EC2_BUCKET/$EC2_AMI_NAME CHOIX_X=1 if test -f /etc/z_firstrun.fait; then echo echo -en "\033[0;44mMenu (indiquer un choix) \033[0m\n" echo -en "\033[0;44m------------------------ \033[0m\n" echo -en "\033[0;44m \033[0m\n" echo -en "\033[0;44m1 - une AMI + volume EBS \033[0m\n" echo -en "\033[0;44m2 - volume EBS seulement \033[0m\n" read CHOIX_I if [[ $CHOIX_I == 1 ]]; then echo CHOIX_X=1 echo fi echo if [[ $CHOIX_I == 2 ]]; then echo CHOIX_X=0 echo if test -r /usr/lib/jvm/java-6-sun-$JAV_R; then echo else echo echo "Erreur de version : Modifier la version JAVA dans le script et relancer le script" echo echo exit echo fi echo clear echo fi echo if [[ $CHOIX_I != 2 && $CHOIX_I != 1 ]]; then echo echo Erreur : il faut un choix 1 ou 2 ... Relancer le script et faire un choix valide echo echo exit echo fi echo else echo sleep 3 echo fi echo clear # condition si AMI + EBS echo if [[ $CHOIX_X == 1 ]]; then echo echo "" > /etc/z_firstrun.fait echo rm -rf /tmp/* echo Effacement des fichiers dans /tmp/ ... Fait echo if test -f /etc/profile.d/ec2.sh; then echo rm /etc/profile.d/ec2.sh echo Effacement du fichier /etc/profile.d/ec2.sh ... Fait echo fi # AMA_INST=0 ceci est un drapeau pour # 0 = installer ou 1 = non installer # les outils amazon en cas de 2 eme lancement du script AMA_INST=0 if test -f $REP_IMG/$NOM_VERS*.img; then echo # rm $REP_IMG/$EC2_AMI_NAME.img rm $REP_IMG/$NOM_VERS*.img echo Effacement du fichier image en $REP_IMG/$NOM_VERS*.img ... Fait echo fi if test -f /etc/profile.back; then echo cp /etc/profile.back /etc/profile echo Restauration de /etc/profile ... Fait echo fi # ceci est un drapeau pour installer ou reinstaller ou non les outils amazon if test -r $CHEMIN_INSTALL_EC2_TOOLS; then echo AMA_INST=1 # rm -rf $CHEMIN_INSTALL_EC2_TOOLS # echo Effacement repertoire $CHEMIN_INSTALL_EC2_TOOLS ... Fait echo fi AA_2=oui AA_1=non if test -r $CHEMIN_IMG/; then echo rm -fr $CHEMIN_IMG AA_1=oui echo fi if test -r $CHEMIN_IMG/; then echo echo Essai de demontage du repertoire en chroot ... chroot $CHEMIN_IMG umount /dev/pts chroot $CHEMIN_IMG umount /proc umount $CHEMIN_IMG rm -fr $CHEMIN_IMG AA_1=oui echo fi if test -r $CHEMIN_IMG/; then echo echo -en "\033[0;33mImpossible de continuer car un ancien repertoire chroot existe et est monte et le script n est pas arrive a le demonter\033[0m\n" echo echo -en "\033[0;33mIl faut rebooter le PC et re lancer le script ...\033[0m\n" AA_1=non echo exit echo else echo if [[ $AA_1 == $AA_2 ]]; then echo echo Effacement repertoire $CHEMIN_IMG ... Fait echo fi echo fi echo echo echo Le nom de la version AMI : $EC2_AMI_NAME echo echo sleep 3 # # Installer des paquets, ajout de sources non free, update, upgrade # echo echo -en "\033[0;36mDebut installation de rsync\033[0m\n" sleep 1 echo apt-get install rsync echo echo -en "\033[1;32mInstallation de rsync ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de unzip\033[0m\n" sleep 1 echo apt-get install unzip echo echo -en "\033[1;32mInstallation de unzip ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de curl\033[0m\n" sleep 1 echo apt-get install curl < /etc/yes3.txt echo echo -en "\033[1;32mInstallation de curl ... Fait\033[0m\n" echo if test -f /etc/z_sourceslist.fait; then echo echo -en "\033[1;33mAjout des sources non free dans /etc/apt/sources.list ... Deja Fait ... Pas de modification\033[0m\n" echo else echo echo "" >> /etc/apt/sources.list echo "deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list echo "deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list echo "" > /etc/z_sourceslist.fait echo -en "\033[1;33mAjout des sources non free dans /etc/apt/sources.list ... Fait\033[0m\n" echo fi sleep 1 echo echo -en "\033[0;36mUpdate et Upgrade\033[0m\n" sleep 1 echo aptitude update sleep 1 aptitude update sleep 1 aptitude safe-upgrade < /etc/yes3.txt echo -en "\033[1;32mUpdate et Upgrade ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de ruby\033[0m\n" sleep 1 echo aptitude install ruby < /etc/yes3.txt echo -en "\033[1;32mInstallation de ruby ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de libopenssl-ruby\033[0m\n" sleep 1 echo aptitude install libopenssl-ruby echo -en "\033[1;32mInstallation de libopenssl-ruby ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de debootstrap\033[0m\n" sleep 1 echo aptitude install debootstrap echo -en "\033[1;32mInstallation de debootstrap ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de debconf-utils\033[0m\n" sleep 1 echo aptitude install debconf-utils echo -en "\033[1;32mInstallation de debconf-utils ... Fait\033[0m\n" echo echo "sun-java6-jre shared/accepted-sun-dlj-v1-1 boolean true" > /etc/z_jre.txt echo echo -en "\033[0;36mDebut installation de sun-java6-jre\033[0m\n" sleep 1 echo debconf-set-selections < /etc/z_jre.txt aptitude install sun-java6-jre < /etc/yes3.txt rm /etc/z_jre.txt echo -en "\033[1;32mInstallation de sun-java6-jre ... Fait\033[0m\n" echo echo java -version echo # if test -r /usr/lib/jvm/java-6-sun-$JAV_R; then # echo # else # echo # echo -en "\033[0;44mIntroduire la Version de Java retournee : ex (1.6.0.24)\033[0m\n" # read JAV_R # echo -en "\033[0;36mVersion de Java introduite : \033[0mjava-6-sun-$JAV_R" # echo # fi # if test -r /usr/lib/jvm/java-6-sun-$JAV_R; then # echo # else # echo # echo -en "\033[0;41mIntroduire la Version de Java retournee (Ne mettre que des points pas d underscore) : ex (1.6.0.24)\033[0m\n" # read JAV_R # echo -en "\033[0;36mVersion de Java introduite : \033[0mjava-6-sun-$JAV_R" # echo # fi if test -r /usr/lib/jvm/java-6-sun-$JAV_R; then echo else echo echo "Erreur de version : Modifier la version JAVA dans le script et relancer le script" echo echo exit echo fi # # Récupération des outils AMAZON API et configuration de ceux-ci # if [[ $AMA_INST == 0 ]]; then echo -en "\033[0;36mDebut installation des outils Amazon\033[0m\n" sleep 1 echo rm -rf $CHEMIN_INSTALL_EC2_TOOLS || true mkdir -p $CHEMIN_INSTALL_EC2_TOOLS sleep 1 curl -o /tmp/ec2-api-tools.zip http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip sleep 1 echo sleep 1 curl -o /tmp/ec2-ami-tools.zip http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip sleep 1 unzip /tmp/ec2-api-tools.zip -d /tmp/ sleep 1 unzip /tmp/ec2-ami-tools.zip -d /tmp/ sleep 1 cp -r /tmp/ec2-api-tools-*/* $CHEMIN_INSTALL_EC2_TOOLS/. sleep 1 rsync -av /tmp/ec2-ami-tools-*/ $CHEMIN_INSTALL_EC2_TOOLS sleep 1 rm -rf /tmp/ec2-a* sleep 1 rm -rf /usr/local/bin/ec2-* sleep 1 echo else echo -en "\033[0;36mLes outils Amazon sont deja installes ... reconfiguration en cours ...\033[0m\n" sleep 1 echo fi cp /etc/profile /etc/profile.back echo 'export PATH=$PATH:$CHEMIN_INSTALL_EC2_TOOLS/bin' >> /etc/profile echo 'export EC2_HOME=$CHEMIN_INSTALL_EC2_TOOLS' >> /etc/profile echo 'export PATH=$PATH:$CHEMIN_INSTALL_EC2_TOOLS/bin' >> /etc/profile.d/ec2.sh echo 'export EC2_HOME=$CHEMIN_INSTALL_EC2_TOOLS' >> /etc/profile.d/ec2.sh echo Test du Bucket : tentative d envoi d un fichier test echo EC2_AMI_TOOLS=$CHEMIN_INSTALL_EC2_TOOLS EC2_API_TOOLS=$CHEMIN_INSTALL_EC2_TOOLS echo "" > $REP_IMG/testbucket mkdir /tmp/testbucket sleep 1 cd $REP_IMG export EC2_HOME=$EC2_AMI_TOOLS $EC2_AMI_TOOLS/bin/ec2-bundle-image -i $REP_IMG/testbucket -k $EC2_PRIVATE_KEY -c $EC2_CERT -u $EC2_USER_ID -r i386 sleep 1 $EC2_AMI_TOOLS/bin/ec2-upload-bundle -m /tmp/testbucket.manifest.xml -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY -b $EC2_BUCKET --location $EC2_REGION sleep 1 $EC2_AMI_TOOLS/bin/ec2-download-bundle -b $EC2_BUCKET -p testbucket -d /tmp/testbucket -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY -k $EC2_PRIVATE_KEY --url https://s3.amazonaws.com sleep 1 $EC2_AMI_TOOLS/bin/ec2-delete-bundle -b $EC2_BUCKET -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY -p testbucket --url https://s3.amazonaws.com --yes sleep 1 if test -f /tmp/testbucket/testbucket.manifest.xml; then echo echo -en "\033[1;33mOK pour la Zone et le Bucket : upload et download OK ... Le programme continue ... \033[0m\n" echo else echo echo echo "Erreur d Upload sur le Bucket ... Celui-ci correspond t il a la ZONE selectionnee ? Verifier et relancer le script" echo echo exit echo fi rm -rf /tmp/testbucket* rm -rf $REP_IMG/testbucket* echo -en "\033[1;32mInstallation des outils Amazon ... Fait\033[0m\n" sleep 1 # # Création d une image de 10 Go . C est le maximum actuellement en store-instance ! # # Il faut naturellement cet espace libre sur le disque du pc local ! # # Cela conditionne l espace qu on peut envisager sur le Cloud plus tard. # # NB : - si l image est créée à 1Go, on ne pourra pas aller plus loin que 1 Go sur le serveur ... ! # # - plus on met de Go, plus il faut du temps pour créer l image ci plus bas ! # # - Après test > 10 Go = ERROR: the specified image file xxxxxx is too large # echo echo echo -en "\033[1;33mCreation de l image disque de 10 Go en $REP_IMG : cela peut prendre quelques minutes ...\033[0m\n" echo cd $REP_IMG dd if=/dev/zero of=$EC2_AMI_NAME.img bs=1M count=10240 && mkfs.ext3 -F $EC2_AMI_NAME.img # # Montage en $CHEMIN_IMG , bootstrap et entrée dans le chroot, update, installation de paquets, configurations ... # echo echo -en "\033[1;33mCreation de l image disque de 10 Go ... Fait\033[0m\n" mkdir $CHEMIN_IMG cd $REP_IMG mount -o loop $EC2_AMI_NAME.img $CHEMIN_IMG mkdir -p $CHEMIN_IMG/usr/sbin/ cat > $CHEMIN_IMG/usr/sbin/policy-rc.d < $CHEMIN_IMG/etc/apt/sources.list echo "deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib" >> $CHEMIN_IMG/etc/apt/sources.list echo "deb http://security.debian.org/ squeeze/updates main" >> $CHEMIN_IMG/etc/apt/sources.list echo "deb-src http://security.debian.org/ squeeze/updates main" >> $CHEMIN_IMG/etc/apt/sources.list echo "y" > $CHEMIN_IMG/etc/yes1.txt echo "fr_BE.UTF-8 UTF-8" > $CHEMIN_IMG/etc/locale.gen sleep 1 ln -s /sbin/MAKEDEV $CHEMIN_IMG/dev/MAKEDEV export DEBIAN_FRONTEND=noninteractive chroot $CHEMIN_IMG aptitude update chroot $CHEMIN_IMG dpkg-reconfigure --priority=critical locales echo echo echo -en "\033[0;36mDebut Desinstallation de isc-dhcp-client dans chroot\033[0m\n" sleep 1 echo chroot $CHEMIN_IMG aptitude remove --purge isc-dhcp-client < $CHEMIN_IMG/etc/yes1.txt # echo echo -en "\033[1;32mDesinstallation de isc-dhcp-client dans chroot ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut Desinstallation de isc-dhcp-common dans chroot\033[0m\n" sleep 1 echo chroot $CHEMIN_IMG aptitude remove --purge isc-dhcp-common < $CHEMIN_IMG/etc/yes1.txt # echo echo -en "\033[1;32mDesinstallation de isc-dhcp-common dans chroot ... Fait\033[0m\n" echo echo echo -en "\033[0;36mDebut installation de dhcpcd dans chroot\033[0m\n" sleep 1 echo chroot $CHEMIN_IMG aptitude install dhcpcd echo -en "\033[1;32mInstallation de dhcpcd dans chroot ... Fait\033[0m\n" echo echo echo -en "\033[0;36mUpdate et Upgrade dans chroot ... en cours ...\033[0m\n" echo chroot $CHEMIN_IMG aptitude update sleep 1 chroot $CHEMIN_IMG aptitude safe-upgrade < $CHEMIN_IMG/etc/yes1.txt sleep 1 # echo echo -en "\033[1;32mUpdate et Upgrade dans chroot ... Fait\033[0m\n" echo echo echo -en "\033[1;33mModification de fichiers ou création dans chroot ... en cours ...\033[0m\n" echo unset DEBIAN_FRONTEND chroot $CHEMIN_IMG mkdir -p /boot/grub echo Creation repertoire dans chroot $CHEMIN_IMG chemin: /boot/grub echo "localhost" > $CHEMIN_IMG/etc/hostname echo Modification fichier dans chroot $CHEMIN_IMG chemin: /etc/hostname chroot $CHEMIN_IMG rm /etc/udev/rules.d/70-persistent-net.rules echo Effacement fichier dans chroot $CHEMIN_IMG chemin: /etc/udev/rules.d/70-persistent-net.rules chroot $CHEMIN_IMG passwd -d root sleep 1 # Modification / création des fichiers pour GRUB, hosts, fstab, ect ... echo "" >> $CHEMIN_IMG/etc/modprobe.d/blacklist.conf echo "blacklist pcspkr" >> $CHEMIN_IMG/etc/modprobe.d/blacklist.conf sleep 1 echo Modification fichier dans chroot $CHEMIN_IMG chemin: /etc/modprobe.d/blacklist.conf echo cat > $CHEMIN_IMG/boot/grub/menu.lst <<_EOF_ default 1 timeout 1 title Debian GNU/Linux 6.0.2 (squeeze) i386, with 2.6.32-5-xen-686 root (hd0) kernel /boot/vmlinuz-2.6.32-5-xen-686 root=/dev/xvda1 ro initrd /boot/initrd.img-2.6.32-5-xen-686 title Debian GNU/Linux 6.0.2 (squeeze) i386, with 2.6.32-5-xen-686 root (hd0) kernel /boot/vmlinuz-2.6.32-5-xen-686 root=/dev/xvda1 ro initrd /boot/initrd.img-2.6.32-5-xen-686 _EOF_ sleep 1 echo Creation fichier dans chroot $CHEMIN_IMG chemin: /boot/grub/menu.lst cat > $CHEMIN_IMG/etc/fstab <<_EOF_ # /dev/xvda1 / ext3 defaults 1 2 none /proc proc defaults,noauto 0 0 none /dev/pts devpts gid=5,mode=620,noauto 0 0 none /dev/shm tmpfs defaults 0 0 none /sys sysfs defaults,noauto 0 0 _EOF_ sleep 1 echo Creation fichier dans chroot $CHEMIN_IMG chemin: /etc/fstab cat > $CHEMIN_IMG/etc/hosts <<_EOF_ 127.0.0.1 localhost localhost.localdomain # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters _EOF_ sleep 1 echo Creation fichier dans chroot $CHEMIN_IMG chemin: /etc/hosts cat > $CHEMIN_IMG/etc/network/interfaces <<_EOF_ auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp _EOF_ sleep 1 echo Modification de l entete dans chroot $CHEMIN_IMG chemin: /etc/motd.tail # modification du message d accueil avec l origine du script de compilation echo "" >> $CHEMIN_IMG/etc/motd.tail echo "Amazon Image Machine (AMI) Debian 6.0.2 generated by script :" >> $CHEMIN_IMG/etc/motd.tail echo "http://marcfiasse.com/editeurs/cloud/ec2/" >> $CHEMIN_IMG/etc/motd.tail # echo "Voir /etc/motd.tail pour modifier cette entete" >> $CHEMIN_IMG/etc/motd.tail echo "" >> $CHEMIN_IMG/etc/motd.tail sleep 1 echo Creation fichier dans chroot $CHEMIN_IMG chemin: /etc/network/interfaces # passwd root # xxxxxxx # xxxxxxx echo echo -en "\033[1;33mModification de fichiers ou création dans chroot ... en cours ... ...\033[0m\n" echo chroot $CHEMIN_IMG sed -i -e "s/^#PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config sleep 1 echo Modification fichier dans chroot $CHEMIN_IMG chemin: /etc/ssh/sshd_config echo "xfs" >> $CHEMIN_IMG/etc/modules sleep 1 echo Modification fichier dans chroot $CHEMIN_IMG chemin: /etc/modules echo chroot $CHEMIN_IMG /etc/init.d/ssh stop sleep 1 # # On emploie des clés dynamiques qu on crée par le site Amazon, donc pas besoin # # Sinon cette clé publique est visible dans la fenêtre du programme, quand on importe la clé privée sur puttygen ! # # Créer une clé pour rien créera le dossier avec les bonnes autorisations. la périphrase doit etre de min 8 caractères # # # ssh-keygen -t rsa -b 768 # # # cd /root/.ssh # rm id_rsa.pub # rm id_rsa # nano key7.pub # # cat >/root/.ssh/authorized_keys <<_EOF_ # ssh-rsa AAAAB3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mykey # _EOF_ # # chmod 600 authorized_keys # # # Téléchargement de 2 fichiers sur mon site : http://marcfiasse.com/editeurs/cloud/ec2/ # # Ils sont nécessaire pour lire les meta datas AMAZON, récupérer la clé publique ssh, modifier le fichier authorize, ect ... # echo echo -en "\033[1;33mModification de fichiers ou création dans chroot ... en cours ... ... ...\033[0m\n" echo cd $CHEMIN_IMG/etc/init.d/ wget http://marcfiasse.com/editeurs/cloud/ec2/getsshkey cd $CHEMIN_IMG/etc/init.d/ wget http://marcfiasse.com/editeurs/cloud/ec2/ec2-run-user-data chroot $CHEMIN_IMG chmod 755 /etc/init.d/getsshkey chroot $CHEMIN_IMG chmod 755 /etc/init.d/ec2-run-user-data sleep 1 echo Modification autorisation pour les fichiers telecharges dans chroot $CHEMIN_IMG chemin: /etc/init.d/ chroot $CHEMIN_IMG update-rc.d getsshkey defaults chroot $CHEMIN_IMG update-rc.d ec2-run-user-data defaults chroot $CHEMIN_IMG update-rc.d -f hwclock.sh remove chroot $CHEMIN_IMG update-rc.d -f hwclockfirst.sh remove sleep 1 echo Modification update-rc.d dans chroot echo "lo=lo" > $CHEMIN_IMG/dev/shm/network/ifstate echo "eth0=eth0" >> $CHEMIN_IMG/dev/shm/network/ifstate chroot $CHEMIN_IMG chmod 664 /dev/shm/network/ifstate sleep 1 echo Modification fichier dans chroot $CHEMIN_IMG chemin: /dev/shm/network/ifstate sleep 1 echo echo -en "\033[1;33mModification de fichiers ou création dans chroot ... Fait\033[0m\n" echo # # fin de des configs, nettoyage, sortie du mode chroot # echo echo -en "\033[1;33mNettoyage dans chroot ... en cours ...\033[0m\n" cd $CHEMIN_IMG/var/cache/apt/archives # dir export DEBIAN_FRONTEND=noninteractive echo chroot $CHEMIN_IMG aptitude update echo chroot $CHEMIN_IMG aptitude safe-upgrade < $CHEMIN_IMG/etc/yes1.txt # echo echo -en "\033[1;33mNettoyage dans chroot ... en cours ... ...\033[0m\n" echo chroot $CHEMIN_IMG apt-get autoremove --purge sleep 1 chroot $CHEMIN_IMG apt-get --list-cleanup update sleep 1 chroot $CHEMIN_IMG apt-get clean sleep 1 chroot $CHEMIN_IMG apt-get autoclean sleep 1 chroot $CHEMIN_IMG aptitude autoclean sleep 1 chroot $CHEMIN_IMG aptitude clean echo unset DEBIAN_FRONTEND sleep 1 chroot $CHEMIN_IMG sed -i -e 's/^set historylog/unset historylog/;s/^\(# \)*set tabsize .*/set tabsize 4/' /etc/nanorc chroot $CHEMIN_IMG rm -rf /var/log/*.gz /var/log/{bootstrap,dpkg}.log /var/cache/apt/*.bin chroot $CHEMIN_IMG rm -rf /tmp/* chroot $CHEMIN_IMG rm /var/log/alternatives.log /var/log/apt/* chroot $CHEMIN_IMG rm /etc/yes1.txt rm $CHEMIN_IMG/usr/sbin/policy-rc.d sleep 1 # Commenter ces deux lignes ci plus bas, si on veut une instruction apt-get install # juste apres le lancement manuel par l'interface amazon, ou par ec2-run-instances avec run_user_data via API. # rm -rf $CHEMIN_IMG/var/lib/apt/lists/ftp* # rm -rf $CHEMIN_IMG/var/lib/apt/lists/sec* # Sinon, si on efface ces deux lignes ci plus haut, il faut un apt-get update AVANT tout apt-get install # Le script run-user-data lancé au démarrage permet d exécuter d emblée des instructions au premier lancement ! # ( voir le script de Eric Hammond /etc/init.d/ec2-run-user-data ) # Pour utiliser les run-user-data, il faut creer un fichier par ex : /home/user-data.txt avec les instructions à exécuter comme dans un script bash # Il faut alors utiliser cette commande : # ./ec2-run-instances ami-xxxxxxx -k my_key_amazon -f /home/user-data.txt -t m1.small -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA # voir pour plus d'infos : http://docs.amazonwebservices.com/AWSEC2/2011-05-15/CommandLineReference/index.html?command-reference.html chroot $CHEMIN_IMG rm -rf /etc/dhcp chroot $CHEMIN_IMG rm -rf /etc/dhcp3 chroot $CHEMIN_IMG rm -rf /var/lib/dhcp echo "" > $CHEMIN_IMG/var/log/aptitude echo echo Liste Repertoire /var/cache/apt/archives/ dans chroot $CHEMIN_IMG/ apres nettoyage : echo cd $CHEMIN_IMG/var/cache/apt/archives/ dir echo echo Liste Repertoire /var/lib/apt/lists/ dans chroot $CHEMIN_IMG/ apres nettoyage : echo cd $CHEMIN_IMG/var/lib/apt/lists/ dir sleep 3 echo echo Demontage de /dev/pts dans chroot chroot $CHEMIN_IMG umount /dev/pts echo Demontage de /proc dans chroot chroot $CHEMIN_IMG umount /proc # exit sleep 1 echo # echo echo -en "\033[1;33mNettoyage dans chroot ... Fait\033[0m\n" echo sleep 1 echo echo -en "\033[1;33mCopie des répertoires et fichiers du kernel XEN /lib/modules et /boot dans le chroot ... \033[0m\n" # # Copie des fichiers du Kernel XEN de /lib/modules/ --> /mnt/ami/lib/modules et /boot/ --> /mnt/ami/boot # # Démontage et fin # sleep 1 cp -R /lib/modules/2.6.32-5-xen-686 $CHEMIN_IMG/lib/modules/2.6.32-5-xen-686 sleep 1 cp /boot/System.map-2.6.32-5-xen-686 $CHEMIN_IMG/boot/System.map-2.6.32-5-xen-686 cp /boot/config-2.6.32-5-xen-686 $CHEMIN_IMG/boot/config-2.6.32-5-xen-686 cp /boot/initrd.img-2.6.32-5-xen-686 $CHEMIN_IMG/boot/initrd.img-2.6.32-5-xen-686 cp /boot/vmlinuz-2.6.32-5-xen-686 $CHEMIN_IMG/boot/vmlinuz-2.6.32-5-xen-686 cd /mnt umount $CHEMIN_IMG sleep 1 echo -en "\033[1;33mCopie des répertoires et fichiers du kernel XEN /lib/modules et /boot dans le chroot ... Fait\033[0m\n" echo sleep 1 echo Demontage du chroot $CHEMIN_IMG echo # echo echo -en "\033[1;33mConfiguration du chroot $CHEMIN_IMG ... Terminee\033[0m\n" echo ############################### # sert de 0 = debug ou 1 = envoie les instructions EC2 EC2_GO=1 # # Créer les fichiers à uploader dans le répertoire temporaire du pc local ( ici, 23 ) # ----------------------------------------------------------------------- # echo echo -en "\033[1;33mCreation des fichiers a uploader dans /tmp ... en cours ... ( cela peut prendre quelques minutes )\033[0m\n" echo cd $REP_IMG export EC2_HOME=$EC2_AMI_TOOLS if [[ $EC2_GO == 1 ]]; then $EC2_AMI_TOOLS/bin/ec2-bundle-image -i $EC2_AMI_NAME.img -k $EC2_PRIVATE_KEY -c $EC2_CERT -u $EC2_USER_ID -r i386 fi echo echo -en "\033[1;33mCreation des fichiers a uploader dans /tmp ... Fait\033[0m\n" echo # # Uploader vers le S3 ( bucket : avec majuscule, _ ou autres, ça fait ACL error ) # ------------------- # echo echo -en "\033[1;33mUpload sur le bucket ... en cours ... ( cela peut prendre quelques minutes )\033[0m\n" echo if [[ $EC2_GO == 1 ]]; then $EC2_AMI_TOOLS/bin/ec2-upload-bundle -m /tmp/$EC2_AMI_NAME.img.manifest.xml -a $EC2_ACCESS_KEY -s $EC2_SECRET_KEY -b $EC2_BUCKET --location $EC2_REGION fi echo echo -en "\033[1;33mUpload sur le bucket Fait\033[0m\n" echo # # Créer une Instance : vérifier la version de JAVA corriger si nécessaire # ----------------------------------------------------------------------- # echo echo -en "\033[1;33mCreation de l instance AMI ... en cours ...\033[0m\n" echo java -version export EC2_HOME=$EC2_API_TOOLS export JAVA_HOME=/usr/lib/jvm/java-6-sun-$JAV_R echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-register --kernel $EC2_AKI --url $REGION_AMA -n $EC2_AMI_NAME $EC2_BUCKET/$EC2_AMI_NAME.img.manifest.xml -K $EC2_PRIVATE_KEY -C $EC2_CERT fi echo echo -en "\033[1;33mCreation de l instance AMI ... Fait\033[0m\n" echo # # Ouvrir le port 22 sur le groupe default # --------------------------------------- # echo echo -en "\033[1;33mOuverture du port 22 sur le groupe default ... en cours ...\033[0m\n" echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-authorize default -P tcp -p 22 -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi echo echo -en "\033[1;33mOuverture du port 22 sur le groupe default ... Fait\033[0m\n" echo # # Lister les instances # -------------------- # echo echo -en "\033[1;33mLister les instances ... en cours ...\033[0m\n" echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-describe-instances -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi echo echo -en "\033[1;33mLister les instances ... Fait\033[0m\n" echo # # Voir la console : i-xxxxxxx # --------------------------- # # if [[ $EC2_GO == 1 ]]; then # $EC2_API_TOOLS/bin/ec2-get-console-output i-xxxxxxx -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA # fi # # Lancer une instance ??? sans certificat ??? hum ... # ------------------- # # EC2_AMI_INSTANCE_ID=ami-xxxxxxx # if [[ $EC2_GO == 1 ]]; then # $EC2_API_TOOLS/bin/ec2-run-instances $EC2_AMI_INSTANCE_ID -K $EC2_PRIVATE_KEY -C $EC2_CERT --kernel $EC2_AKI --ramdisk $EC2_RAMDISK --region eu-west-1 # fi # # Lancer une instance depuis la console # ------------------------------------- # # # IMPORTANT IMPORTANT IMPORTANT IMPORTANT # # Les instances chez Amazon se lancent avec des noyaux kernel de base de chez Amazon. # # MAIS ... IL FAUT CHOISIR UN KERNEL ID RECENT dans la liste ( sinon, ça bloque sur GRUB - voir la console ) # # # aki-4deec439 # # # FIN # # # Taille de l image à transférer : environ 240 Mb # # Ces infos sont fournies sans garantie. J ai testé pluseurs fois avec succès. # # Perso, j ai cherché 10 jours avant d avoir le contact avec le ssh :-) ... donc, courage ! # # Mes images ne sont pas publiques pour le moment. # # Memo sous licence Apache v2. - Marc Fiasse - 30 juin 2011 - http://marcfiasse.com/editeurs/cloud/ec2/ # # # # # # Credits # ------- # # Auteur du script : ec2-run-user-data : Eric Hammond # # Auteur du script : getsshkey : ? # echo echo echo "Generation AMI EC 2 Faite ... http://marcfiasse.com/editeurs/cloud/ec2/ ... Usage gratuit ... Licence Apache v2. ... 30 juin 2011" echo sleep 1 echo echo "Suite..." echo sleep 2 echo # fin de condition pour AMI + EBS fi echo # Marc Fiasse # Programme Construction EBS Facultatif... # sert de 0 = debug ou 1 = envoie les instructions EC2 EC2_GO=1 EC2_AMI_TOOLS=$CHEMIN_INSTALL_EC2_TOOLS EC2_API_TOOLS=$CHEMIN_INSTALL_EC2_TOOLS java -version export EC2_HOME=$EC2_API_TOOLS export JAVA_HOME=/usr/lib/jvm/java-6-sun-$JAV_R echo echo Creation Amazon Image Machine EBS - Elastic Block Storage echo --------------------------------------------------------- echo echo Cette procedure est semi-automatique car il faut en meme temps introduire des reponses et echo intervenir sur une instance cree EC 2 ... Ouvrir le panneau Amazon pour cela. echo A chaque attente il faudra confirmer si un point ou l autre est demarre pour continuer ... echo echo echo -en "\033[0;44mLancer une nouvelle instance automatiquement en vue de creer AMI EBS ? (O/n)\033[0m" read ACCORD echo if test "${ACCORD}" != "n" && test "${ACCORD}" != "N" ; then # echo # echo Fichier run-data-instance enregistre en $REP_IMG/user-date.txt # echo # cat > $REP_IMG/user-date.txt <<_EOF_ # #!/bin/bash # echo hello # exit # _EOF_ echo echo -en "\033[0;44mEntrer la Amazon Image Machine AMI qui va etre lance : (ami-xxxxxxx)\033[0m\n" read AMI_EC echo -en "\033[0;36mNom de AMI : \033[0m$AMI_EC" echo echo echo echo -en "\033[0;44mNom de la cle SSH : (key name ssh)\033[0m\n" read NOM_CLESSH echo -en "\033[0;36mNom de la cle SSH : \033[0m$NOM_CLESSH" echo echo echo echo Demarrage d une instance AMI EC 2 ... cela peut prendre quelques secondes ... echo --------------------------------- echo # avec run-meta-data # if [[ $EC2_GO == 1 ]]; then # $EC2_API_TOOLS/bin/ec2-run-instances $AMI_EC -k $NOM_CLESSH -f user-date.txt -t m1.small -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA # fi if [[ $EC2_GO == 1 ]]; then # sans run-meta-data $EC2_API_TOOLS/bin/ec2-run-instances $AMI_EC -k $NOM_CLESSH -t m1.small -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 2 echo echo echo -en "\033[0;44mEntrer la region renvoyee a-b-c : (eu-west-1x)\033[0m\n" read REG_I echo -en "\033[0;36mRegion Instance lancee renvoyee : \033[0m$REG_I" # # volume EBS # ---------- # Creer un volume... cd $REP_IMG echo echo echo echo Creer un volume ... cela peut prendre quelques secondes ... echo --------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-create-volume --size 10 --availability-zone $REG_I -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 # réponse # VOLUME ............. echo echo echo -en "\033[0;44mEntrer le Nom du Volume renvoyee : (vol-xxxxxxx)\033[0m\n" read VOLUME_I echo -en "\033[0;36mNom du Volume renvoyee : \033[0m$VOLUME_I" echo echo echo echo -en "\033[0;44mInstance lancee renvoyee : (i-xxxxxxx)\033[0m\n" read INSTA_I echo -en "\033[0;36mInstance lancee renvoyee : \033[0m$INSTA_I" echo echo echo echo Attacher un volume à l instance AMI : /dev/sdh se notifie /dev/xvdh echo ------------------------------------------------------------------- echo echo echo -en "\033[0;44mTaper la touche ENTREE quand l instance $INSTA_I est en mode running ( voir panneau Amazon )\033[0m" read ACCORD echo if test "${ACCORD}" != "n" && test "${ACCORD}" != "N" ; then echo echo echo Attachement du volume a l instance AMI EC 2 ... cela peut prendre quelques secondes ... echo ------------------------------------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-attach-volume $VOLUME_I --instance $INSTA_I --device /dev/sdh -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 # réponse # ATTACHMENT ............. echo else echo echo Probleme : Effacez volume + instance, recommencer, et attendre que l instance soit running echo echo echo exit echo # fin de condition fi # ------------------------------------- # A faire sur l'instance AMI echo echo "# SUITE : Ouvrir l instance $INSTA_I normalement par PuTTY" echo "# Script a executer sur l instance $INSTA_I" echo "# Copier-coller dans le repertoire temporaire /tmp comme un script bash avec chmod 755" echo "# Puis lancer ... Attention de mettre la premiere ligne du script en ligne 0 ... " echo echo echo "#!/bin/bash" echo echo "cd /dev" echo "dir" echo "yes | mkfs -t ext3 /dev/xvdh" echo "fsck.ext3 /dev/xvdh" echo "mkdir /mnt/ebsimage" echo "cp /etc/fstab /etc/fstab.back" echo "echo '/dev/xvdh /mnt/ebsimage ext3 defaults,noatime 0 0' >> /etc/fstab" echo "mount /mnt/ebsimage" echo "# verification espace disque, copie instance xvda1 vers volume xvdh, nettoyage" echo "df -h" echo "echo copie des fichiers de xvda1 vers xvdh : cela peut prendre quelques minutes..." echo "dd bs=65536 if=/dev/xvda1 of=/dev/xvdh" echo "rm -rf /mnt/ebsimage/root/.ssh/*" echo "rm -rf /mnt/ebsimage/mnt/*" echo "rm -rf /mnt/ebsimage/var/ec2/*" echo "rm -rf /mnt/ebsimage/var/log/dmesg.*" echo "echo 'Elastic Block Storage (EBS) generated by script :' >> /mnt/ebsimage/etc/motd.tail" echo "echo 'http://marcfiasse.com/editeurs/cloud/ec2/' >> /mnt/ebsimage/etc/motd.tail" echo "echo '' >> /mnt/ebsimage/etc/motd.tail" echo "echo '' > /mnt/ebsimage/var/log/auth.log" echo "echo '' > /mnt/ebsimage/var/log/boot" echo "echo '' > /mnt/ebsimage/var/log/btmp" echo "echo '' > /mnt/ebsimage/var/log/daemon.log" echo "echo '' > /mnt/ebsimage/var/log/debug" echo "echo '' > /mnt/ebsimage/var/log/dmesg" echo "echo '' > /mnt/ebsimage/var/log/faillog" echo "echo '' > /mnt/ebsimage/var/log/fsck/checkroot" echo "echo '' > /mnt/ebsimage/var/log/fsck/checkfs" echo "echo '' > /mnt/ebsimage/var/log/kern.log" echo "echo '' > /mnt/ebsimage/var/log/lastlog" echo "echo '' > /mnt/ebsimage/var/log/lpr.log" echo "echo '' > /mnt/ebsimage/var/log/messages" echo "echo '' > /mnt/ebsimage/var/log/user.log" echo "echo '' > /mnt/ebsimage/var/log/syslog" echo "echo '' > /mnt/ebsimage/var/log/wtmp" echo "cp /mnt/ebsimage/etc/fstab.back /mnt/ebsimage/etc/fstab" echo "rm /mnt/ebsimage/etc/fstab.back" echo "cp /etc/fstab.back /etc/fstab" echo "rm /etc/fstab.back" echo "umount /mnt/ebsimage" echo echo "echo Done ... Le script est termine" echo "exit" echo echo echo "# FIN ------------------------------------" echo echo echo -en "\033[0;44mTaper la touche ENTREE lorsque le script ci plus haut sur l instance $INSTA_I est termine\033[0m" read ACCORD echo if test "${ACCORD}" != "n" && test "${ACCORD}" != "N" ; then echo echo echo Detachement du volume de l instance AMI EC 2 ... cela peut prendre quelques secondes ... echo -------------------------------------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-detach-volume $VOLUME_I --instance $INSTA_I -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 # reponse # creer un snapshot echo echo echo Creation d un Snapshot ... cela peut prendre quelques secondes ... echo ---------------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-create-snapshot $VOLUME_I -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 # reponse # attendre que snapshot soit complet - voir Progress panel parfois c est lent # declarer le EBS - i386 ou x86_86 or x86_64 echo echo echo -en "\033[0;44mNom du Snapshot renvoyee : (snap-xxxxxxx)\033[0m\n" read SNAP_I echo -en "\033[0;36mNom du Snapshot renvoyee : \033[0m$SNAP_I" echo echo echo echo echo Montage du Snapshot ... cela peut prendre quelques minutes ... echo ------------------- echo echo -en "\033[0;44mTaper la touche ENTREE quand le snapshot $SNAP_I est totalement construit et termine ( voir console Amazon )\033[0m" read ACCORD echo if test "${ACCORD}" != "n" && test "${ACCORD}" != "N" ; then echo echo echo Enregistrement nouvel AMI avec volume EBS ... cela peut prendre quelques secondes ... echo ----------------------------------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2reg -kernel $EC2_AKI -s $SNAP_I -a i386 -d Debian602 -n $EC2_BUCKET/$EC2_AMI_NAME -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 # reponse # IMAGE ami-xxxxxxx echo echo echo Effacement du volume de l instance precedement cree ... cela peut prendre quelques secondes ... echo --------------------------------------------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-delete-volume $VOLUME_I -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 echo echo echo Destruction de l instance lancee au debut ... cela peut prendre quelques secondes ... echo ----------------------------------------- echo if [[ $EC2_GO == 1 ]]; then $EC2_API_TOOLS/bin/ec2-terminate-instances $INSTA_I -K $EC2_PRIVATE_KEY -C $EC2_CERT --url $REGION_AMA fi sleep 1 echo echo echo echo "Verifier dans le panneau Amazon que le nouvel Amazon Image Machine Elastic Block Storage existe ..." echo echo "Il devrait pouvoir se lancer en Micro-Instance et faire du Start Stop ..." echo echo echo "Ce programme se termine - http://marcfiasse.com/editeurs/cloud/ec2/ ... Usage gratuit ... Licence Apache v2. ... 30 juin 2011" echo echo exit echo else echo echo Probleme : Effacez volume + instance + snapshot, recommencer, et attendre snapshot compile et termine echo echo echo exit echo # fin de condition fi echo else echo echo Probleme : Effacez volume + instance, recommencer, et attendre que le script soit terminee echo echo echo exit echo # fin de condition fi echo else echo echo "Generation AMI Terminee ... http://marcfiasse.com/editeurs/cloud/ec2/ ... Usage gratuit ... Licence Apache v2. ... 30 juin 2011" echo echo exit echo # fin de condition fi echo exit