2009年5月5日火曜日

AMI作成&アップロード&登録スクリプト(とりあえず版)

スズキです。

そろそろ、"SUZ-LAB謹製 CentOS AMI"を手作業でメンテナンスしていくのが
つらくなって(飽きて)きたので、可能な限り自動化していこうと思っています。

その第一歩として、自分自身のAMIを作成してアップロードして、
そして登録まで一気に行うシェルスクリプトです。
(タイトルにもあるように、まだまだ、「とりあえずノリで作ってみました」版ですが...)

--------【Shell】--------
#!/bin/sh

# とりあえず必要な値はシェル変数に
ACCOUNT_NUMBER=000000000000
ACCESS_KEY=XXXXXXXXXXXXXXXXXXXX
SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PRIVATE_KEY=/mnt/tmp/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
CERTIFICATE=/mnt/tmp/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
IMAGE=ami-centos-core-5.3.7.img
BUCKET=ami-suz-lab.com

# 環境変数の設定
export EC2_HOME=/opt/ec2-api-tools
export JAVA_HOME=/usr/java/default

# シンボリックリンクの削除
rm /home
rm /srv
rm /var

# "/mnt"から"/"に移動
mv /mnt/home /home
mv /mnt/srv /srv
mv /mnt/var /var

# イメージの作成
ec2-bundle-vol -r i386 -d /mnt/tmp \
-c $CERTIFICATE \
-k $PRIVATE_KEY \
-u $ACCOUNT_NUMBER \
-p $IMAGE

# イメージのアップロード
ec2-upload-bundle \
-b $BUCKET \
-m /mnt/tmp/$IMAGE.manifest.xml \
-a $ACCESS_KEY \
-s $SECRET_KEY

# イメージの登録
/opt/ec2-api-tools/bin/ec2-register \
-K $PRIVATE_KEY \
-C $CERTIFICATE \
$BUCKET/$IMAGE.manifest.xml

# "/"から"/mnt"に移動
mv /home /mnt/home
mv /srv /mnt/srv
mv /var /mnt/var

# "/"からに"/mnt"シンボリックリンク
ln -s /mnt/home /home
ln -s /mnt/srv /srv
ln -s /mnt/var /var
--------

オプション(引数)、環境変数、エラー処理まわりがちゃんとできたら、AMIに組み込もう。

--
http://suz-lab.blogspot.com/

0 コメント: