fc2ブログ

2012-03-16(Fri)

Amazon EC2でAMIを生成させる

Amazon EC2でAMIを生成させてみたのでメモる。

手順としては以下のとおり。
(1). 必要パッケージのインストールと設定
(2).設定
(3).イメージを分割して生成する。
 このとき、第一パーティション(10G)分しか生成されないので
 /mntにあるデータで必要なものは第一パーティションに圧縮するかなにかしてコピーしておく。
(4).S3へアップロード
 分割されたイメージファイルをS3で作ったbcuketにアップロードする。
(5).AMIへ登録する。
 AMI IDを取得していつでもInstanceをLaunchできるようにしておく。


BuketのデータはLaunchするときAMI IDから参照されるので消さないこと。


(1). Install
$ aptitude install perl
$ pwd
/mnt/download
$ curl -O http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
$ curl -O http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
$ unzip ec2-ami-tools.zip
$ unzip ec2-api-tools.zip
$ cd /usr/local
$ sudo mv /mnt/download/ec2-ami-tools-1.4.0.5 .
$ sudo mv /mnt/download/ec2-api-tools-1.5.2.4 .
$ ln -s ec2-ami-tools-1.4.0.5 ec2-ami-tools
$ ln -s ec2-api-tools-1.5.2.4 ec2-api-tools


(2). Set Environment
$ vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
export EC2_HOME=/usr/local/ec2-api-tools
export EC2_APITOOL_HOME=$EC2_HOME
export EC2_AMITOOL_HOME=/usr/local/ec2-ami-tools
export PATH="$PATH":$JAVA_HOME/bin
export PATH="$PATH":$EC2_HOME/bin
export PATH="$PATH":$EC2_AMITOOL_HOME/bin

export EC2_PRIVATE_KEY=$HOME/pairkey/pk-XXXXXXXXXXXXXXXXXXXXXXXXXX.pem
export EC2_SECRET=$HOME/pairkey/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
export EC2_ACCESSKEY=XXXXXXXXXXXXXXXX
export EC2_OWNER_ID=XXXX-XXXX-XXXX
export EC2_SECRET_ACCESSKEY=XXXXXXXXXXXXXXXXXXXXXXXXXX
export AWS_ACCESS_KEY_ID=$EC2_ACCESSKEY
export AWS_SECRET_ACCESS_KEY=$EC2_SECRET_ACCESSKEY

$ source ~/.bashrc

ここでJAVA_HOMEに注目する。
64bitでは
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
であるが、32bitの場合は
JAVA_HOME=java-6-openjdk-i386
となる。
注意が必要。

(3). Compress
64bit Linuxを想定しているので(-r x86_64) 32bitなら (-r i386)
$ ec2-bundle-vol -d /mnt/ami --privatekey $EC2_PRIVATE_KEY --cert $EC2_CERT --user  $EC2_OWNER_ID -r x86_64


(4). Upload to S3
$ ec2-upload-bundle --bucket bucketname/large-type/20120302 --manifest ami/image.manifest.xml --access-key $EC2_ACCESSKEY --secret-key $AWS_SECRET_ACCESS_KEY


(5). registered AMI
東京リージョンを想定(--region ap-northeast-1)
$ ec2-register bucketname/large-type/20120302/image.manifest.xml -K $EC2_PRIVATE_KEY -C $EC2_CERT --region ap-northeast-1


スクリプトにしたらこんな感じだろうか。
#!/bin/sh
TODAY=`date +%Y%m%d`
MACHINE_TYPE=i386
# MACHINE_TYPE=x86_64
# REGION=ap-northeast-1
REGION=us-east
BUCKET_NAME=bs-ana-ami

# (1). compress
echo "start ec2-bundle-vol"
ec2-bundle-vol -d /mnt/ami --privatekey $EC2_PRIVATE_KEY --cert $EC2_SECRET --user $EC2_OWNER_ID -r $MACHINE_TYPE
# (2). upload
echo "start ec2-upload-bundle"
ec2-upload-bundle --bucket $BUCKET_NAME/small-type/$TODAY --manifest /mnt/ami/image.manifest.xml --access-key $EC2_ACCESSKEY --secret-k\

# (3). registered AMI
echo "start ec2-register"
ec2-register $BUCKET_NAME/small-type/$TODAY/image.manifest.xml -K $EC2_PRIVATE_KEY -C $EC2_SECRET --region $REGION


参考:
AmazonCloudテクニカルガイド ―EC2/S3からVPCまで徹底解析―
Amazon Web Services ガイドブック クラウドでWebサービスを作ろう!
クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ (ITpro BOOKs)
関連記事
スポンサーサイト



コメントの投稿

管理者にだけ表示を許可する

コメント

プロフィール

kumagonjp2

Author:kumagonjp2
Python,Django,R,Mongo,MySQL,Struts,Spring,データマイニングなどサーバー関係のメモを残していきます。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
雪が3Dで降るブログパーツ ver2

マウスで見る方向変えられます

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR