Script de création d'un Amazone Machine Image (ami) instance root[1] depuis l'instance de référence utilisé comme modèle pour construire l'image en question.
Dans mon cas j'utilise un type hardware m1.large avec comme départ une image de Ubuntu Karmic 9.10 créé par alestic.com.. Une fois cette instance démarrée je l'ai modifier et updaté en fonction des mes besoins. Souhaitant garder comme master de départ cette instance et la dupliquer à volonté j'ai créé décidé et créé une AMI.
Pour ce faire il faut installer les paquets suivant :
apt-get install ec2-ami-tools
apt-get install ec2-api-tools
Il est nécéssaire en outre de disposer d'un stockage Amazon Simple Stockage Service dit bucket S3.
Je considère que disposer déjà d'un compte AWS et des éléments d'identification et authentification lier à ce compte : access key, secret key, certificat x509 etc..
Le script en question de fait que reprendre les commandes ec2 expliqué dans les documentations officielles AWS.
#!/bin/sh
export bucket=ami-stockage
export prefix=k9-karmic-OsBase
export AWS_USER_ID=9452-2985-7536
export AWS_ACCESS_KEY_ID=AKIAJYCTNTV542KX3ONA
export AWS_SECRET_ACCESS_KEY=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
if [ $(uname -m) = 'x86_64' ]; then
arch=x86_64
else
arch=i386
fi
/usr/bin/ec2-bundle-vol -r $arch -d /mnt -p $prefix -u $AWS_USER_ID -k /mnt/pk-*.pem \
-c /mnt/cert-*.pem -s 10240 -e /mnt,/home/ubuntu/.ssh
/usr/bin/ec2-upload-bundle -b $bucket -m /mnt/$prefix.manifest.xml \
-a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY
/usr/bin/ec2-register -K /mnt/pk-*.pem -C /mnt/cert-*.pem $bucket/$prefix.manifest.xml
ec2-bundle-vol construit les paquets de l'image AMI tout en excluant ce celle ci le contenue du répertoire /mnt (avec l'option -e ) ou justement sont stocker provisoirement les paquets en question. J'exclue également /home/ubuntu/.ssh préférent utilisé le compte root.
ec2-upload-bundle upload les paquets sur le bucket S3
ec2-register déclare dans votre compte l'ami, qui reste privée, afin qu'elle soit disponible pour créé de nouvelle instance.