#!/bin/bash # # $Id: bundle.sh 2482 2009-11-24 13:07:35Z alesti $ # bundled die aktuelle Instanz und lädt sie ins S3-bucket # # durch eigene Werte ersetzen, nöch? bundledir="/mnt" pkkey="${bundledir}/pk-key.pem" pkcert="${bundledir}/cert-key.pem" s3bucket="urmelurmelurmel" awsuserid="11111-2222-3333" awsaccesskey="AAAABBBCCCDDDEEEFFFG" awssecretkey="aaabbbcccdddeeefffggghhhiiijjjkkklllmmmz" imgname="ami-aleks-`/bin/date +%Y%m%d-%H%M`" # Testen, ob Key und Cert hochgeladen wurden if [ ! -f ${pkkey} ] && [ ! -f ${pkcert} ] ; then # Keys fehlen, abbrechen echo -e "\nkey und cert nicht gefunden, breche ab - bitte hochladen...\n" exit 1 fi # für das bundlen muß /mnt/persistent umounted werden # /mnt/persistent ist das EBS, also die externe Platte, die alle # indivuduellen Daten hält (Homes, Datenbanken, Anwendungen, ...) # z.B. für ne LAMP-Umgebung... /etc/init.d/mysql_prod stop /etc/init.d/apache2 stop /etc/init.d/postfix stop # lsof-Prüfung hier rein... if [ "lsof |grep persistent" ] ; then lsof|grep persistent echo "manueller Abbruch bei nicht erfolgtem umount JETZT" echo "ansonsten räumt nen Skript alles ab" sleep 5 for i in `lsof |grep persistent|awk '{print $2}'`; do echo $i ; kill -9 $i ; done fi /bin/umount /mnt/persistent # bundlen /usr/local/bin/ec2-bundle-vol -d ${bundledir} -k ${pkkey} -c ${pkcert} -u $awsuserid -r i386 -p ${imgname} # persistent wieder mounten, Dienste wieder starten /bin/mount -a /etc/init.d/mysql_prod start /etc/init.d/apache2 start /etc/init.d/postfix start # upload /usr/local/bin/ec2-upload-bundle -b ${s3bucket} -m ${bundledir}/${imgname}.manifest.xml -a $awsaccesskey -s $awssecretkey # Krempel wieder löschen cd ${bundledir} rm -rf ${imgname}* img-mnt $pkkey $pkcert # registrieren geht von aussen echo "die neue Instanz kann jetzt registriert werden" echo "lokal ausführen: ec2-register ${s3bucket}/${imgname}.manifest.xml " # fettig