#!/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;44m4 - 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 <<EOF
#!/bin/sh
exit 101
EOF
chmod 755 $CHEMIN_IMG/usr/sbin/policy-rc.d

echo
echo
sleep 1
echo Montage de $EC2_AMI_NAME.img depuis $REP_IMG en $CHEMIN_IMG
echo
echo
echo -en "\033[1;33mRecuperation image de base de debian dans $CHEMIN_IMG ... en cours ...\033[0m\n"
echo

sleep 1

debootstrap --include=locales,curl,file,bzip2,ntp,less,resolvconf,xfs,libc6-xen,openssh-server --arch i386 squeeze $CHEMIN_IMG http://ftp.fr.debian.org/debian/

sleep 1

echo
echo -en "\033[1;32mRecuperation image de base de debian ... Fait\033[0m\n"
echo
sleep 1
echo
echo -en "\033[1;33mConfiguration du chroot $CHEMIN_IMG ... en cours ...\033[0m\n"
echo

chroot $CHEMIN_IMG mount -t proc none /proc

chroot $CHEMIN_IMG mkdir -p /dev/pts

chroot $CHEMIN_IMG mount -t devpts none /dev/pts

sleep 1
echo Montage de devpts en /dev/pts
echo Montage de proc en /proc
echo

# chroot $CHEMIN_IMG

echo Ajout de sources dans $CHEMIN_IMG/etc/apt/sources.list... configuration locales ... en cours ...
echo

echo "deb http://ftp.fr.debian.org/debian/ squeeze main contrib" > $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
