@ITの記事の中でUbuntuで始めるクラウドコンピューティングが公開されています。
これに従えばUbuntu Enterprise Cloud (UEC)環境は作れるのですが、ちょっと使いづらいかなと思いました。 単純にインスタンスを動かしたいだけであれば、”euca-bundle-image”、"euca-upload-bundle"などは使わずにWebインタフェースの"Store"メニューを使うのが簡単そうです。 参照::STEP 6: Install an image from the store
手順自体はEucalyptusにあるドキュメントと同じ構成ですが、シェル変数が多用されているために、何をやっているか読み解くのに時間がかかりそうです。 ただクラウド環境は自動化が肝ではあるので、いろいろな作業を自動化するためにこういう方法は必要で、最終的には慣れる必要があると思います。
事前準備
以下ではUECの"Extras"から”euca-debian-5.0-x86_64.tar.gz”をダウンロードした前提で、どのようにイメージを作成して行くのか試してみようと思います。 tar.gzファイルは展開しておきます。
$ tar xvzf euca-debian-5.0-x86_64.tar.gz euca-debian-5.0-x86_64/ euca-debian-5.0-x86_64/xen-kernel/ euca-debian-5.0-x86_64/xen-kernel/vmlinuz-2.6.27.21-0.1-xen euca-debian-5.0-x86_64/xen-kernel/initrd-2.6.27.21-0.1-xen euca-debian-5.0-x86_64/kvm-kernel/ euca-debian-5.0-x86_64/kvm-kernel/vmlinuz-2.6.28-11-generic euca-debian-5.0-x86_64/kvm-kernel/initrd.img-2.6.28-11-generic euca-debian-5.0-x86_64/debian.5-0.x86-64.img
シェルにeucarcファイルを読み込んでおく事と、事前にいくつか準備しておくシェル変数は次のようになっています。設定して別の端末ウィンドウに移ってしまってはシェル変数は引き継がれないので、以下の操作は全部同じ端末ウィンドウの中で実施します。
$ . ~/.euca/eucarc $ TS=$(date +%Y%m%d%H%M%S) $ echo $TS 20091207164000
変数を展開した形の解説 〜 EKI変数の設定まで
*http://www.atmarkit.co.jp/flinux/special/eucaly/eucalyc.html より抜粋 # euca-bundle-image -i $UEC_KERNEL -r $IARCH --kernel true # euca-upload-bundle -b $BUCKET_KERNEL -m /tmp/$UEC_KERNEL.manifest.xml # EKI=$(euca-register $BUCKET_KERNEL/$UEC_KERNEL.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $EKI
"euca-debian-5.0-x86_64.tar.gz"を展開したところから、上記と同じようにコマンドを打つと次のようになります。
$ euca-bundle-image -i euca-debian-5.0-x86_64/kvm-kernel/vmlinuz-2.6.28-11-generic -r x86_64 --kernel true x86_64 Checking image Tarring image Encrypting image Splitting image... Part: vmlinuz-2.6.28-11-generic.part.0 Generating manifest $ euca-upload-bundle -b "k-$TS" -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml Checking bucket: k-20091207164000 Creating bucket: k-20091207164000 Uploading manifest file Uploading part: vmlinuz-2.6.28-11-generic.part.0 Uploaded image as k-20091207164000/vmlinuz-2.6.28-11-generic.manifest.xml $ euca-register k-$TS/vmlinuz-2.6.28-11-generic.manifest.xml IMAGE eki-864C132D $ EKI=eki-864C132D
最後のところは、中身を見せるために少し変更して自分でEKI=eki-864C132Dと代入しています。 "eki-864C132D"の部分は、実行する人によって変化してきます。
変数を展開した形の解説 〜 ERI変数の設定まで
*http://www.atmarkit.co.jp/flinux/special/eucaly/eucalyc.html より抜粋 # euca-bundle-image -i $UEC_INITRD -r $IARCH --ramdisk true # euca-upload-bundle -b $BUCKET_INITRD -m /tmp/$UEC_INITRD.manifest.xml # ERI=$(euca-register $BUCKET_INITRD/$UEC_INITRD.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $ERI
今回も最後のERI変数への代入のところは分けて実行しています。
$ euca-bundle-image -i euca-debian-5.0-x86_64/kvm-kernel/initrd.img-2.6.28-11-generic -r x86_64 --ramdisk true x86_64 Checking image Tarring image Encrypting image Splitting image... Part: initrd.img-2.6.28-11-generic.part.0 Generating manifest $ euca-upload-bundle -b "r-$TS" -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml Checking bucket: r-20091207164000 Creating bucket: r-20091207164000 Uploading manifest file Uploading part: initrd.img-2.6.28-11-generic.part.0 Uploaded image as r-20091207164000/initrd.img-2.6.28-11-generic.manifest.xml $ euca-register r-$TS/initrd.img-2.6.28-11-generic.manifest.xml IMAGE eri-C36C141F $ ERI=eri-C36C141F
変数を展開した形の解説 〜 EMI変数の設定
*http://www.atmarkit.co.jp/flinux/special/eucaly/eucalyc.html より抜粋 # euca-bundle-image -i $UEC_IMG.img -r $IARCH --kernel $EKI --ramdisk $ERI # euca-upload-bundle -b $BUCKET_IMAGE -m /tmp/$UEC_IMG.img.manifest.xml # EMI=$(euca-register $BUCKET_IMAGE/$UEC_IMG.img.manifest.xml | grep "^IMAGE" | awk '{print $2}') && echo $EMI
ここまでで"eucarc"ファイルの中で設定されているもの以外に、次のようなシェル変数を設定しています。
- TS
- 20091207164000
- EKI
- eki-864C132D
- ERI
- eri-C36C141F
$ euca-bundle-image -i euca-debian-5.0-x86_64/debian.5-0.x86-64.img -r x86_64 --kernel $EKI --ramdisk $ERI x86_64 Checking image Tarring image Encrypting image Splitting image... Part: debian.5-0.x86-64.img.part.0 Part: debian.5-0.x86-64.img.part.1 Part: debian.5-0.x86-64.img.part.2 Part: debian.5-0.x86-64.img.part.3 Part: debian.5-0.x86-64.img.part.4 Part: debian.5-0.x86-64.img.part.5 Part: debian.5-0.x86-64.img.part.6 Part: debian.5-0.x86-64.img.part.7 Part: debian.5-0.x86-64.img.part.8 Part: debian.5-0.x86-64.img.part.9 Part: debian.5-0.x86-64.img.part.10 Part: debian.5-0.x86-64.img.part.11 Part: debian.5-0.x86-64.img.part.12 Part: debian.5-0.x86-64.img.part.13 Part: debian.5-0.x86-64.img.part.14 Part: debian.5-0.x86-64.img.part.15 Part: debian.5-0.x86-64.img.part.16 Part: debian.5-0.x86-64.img.part.17 Part: debian.5-0.x86-64.img.part.18 Part: debian.5-0.x86-64.img.part.19 Generating manifest $ euca-upload-bundle -b "i-$TS" -m /tmp/debian.5-0.x86-64.img.manifest.xml Checking bucket: i-20091207164000 Creating bucket: i-20091207164000 Uploading manifest file Uploading part: debian.5-0.x86-64.img.part.0 Uploading part: debian.5-0.x86-64.img.part.1 Uploading part: debian.5-0.x86-64.img.part.2 Uploading part: debian.5-0.x86-64.img.part.3 Uploading part: debian.5-0.x86-64.img.part.4 Uploading part: debian.5-0.x86-64.img.part.5 Uploading part: debian.5-0.x86-64.img.part.6 Uploading part: debian.5-0.x86-64.img.part.7 Uploading part: debian.5-0.x86-64.img.part.8 Uploading part: debian.5-0.x86-64.img.part.9 Uploading part: debian.5-0.x86-64.img.part.10 Uploading part: debian.5-0.x86-64.img.part.11 Uploading part: debian.5-0.x86-64.img.part.12 Uploading part: debian.5-0.x86-64.img.part.13 Uploading part: debian.5-0.x86-64.img.part.14 Uploading part: debian.5-0.x86-64.img.part.15 Uploading part: debian.5-0.x86-64.img.part.16 Uploading part: debian.5-0.x86-64.img.part.17 Uploading part: debian.5-0.x86-64.img.part.18 Uploading part: debian.5-0.x86-64.img.part.19 Uploaded image as i-20091207164000/debian.5-0.x86-64.img.manifest.xml $ euca-register i-$TS/debian.5-0.x86-64.img.manifest.xml IMAGE emi-25881166 $ EMI=emi-25881166
登録したイメージのテスト
いままでに他のイメージを起動するなどしていなければ、keypairの作成とルーティングを作成しておきます。 既に実行されているかは”euca-describe-keypairs”を実行して"mykey"が登録されているかどうか、"euca-describe-groups"を実行して"... ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0"が設定されているかで確認できます。
$ euca-add-keypair mykey > mykey.priv $ euca-authorize default -P tcp -p 22 -s 0.0.0.0/0
さて、いよいよ起動です。
$ euca-run-instances -k mykey $EMI RESERVATION r-56B308F1 admin default INSTANCE i-5EB10A92 emi-25881166 192.168.1.163 172.19.1.4 pending mykey 0 m1.small 2009-12-07T07:52:16.199Z yasundial eki-864C132D eri-C36C141F
設定されている値やインスタンスの状況を調べたい時には"euca-describe-"で始まるコマンドが使えるようです。 Amazon EC2から引き継いでいるんでしょうけれど、良いネーミングルールですね。
先ほどの"euca-run-instances"の出力では、最初はpendingとなっているままなので、起動していません。 "euca-describe-instances"を定期的に実行して、"running"になる事を確認します。 ubuntu.comのUEC Install手順の中ではUNIX系OSに標準的に存在している"watch"コマンドを使う例が載っています。
$ watch -n5 euca-describe-instances
最終的に失敗してしまう…
running状態にはなるものの、busy-boxに落ちてしまっているので、無事に起動というわけにはいきませんでした。 この原因はまた追い掛けていこうと思います。
その他の注意点
今回導入したイメージの中にはXen用のものも含まれていますが、こちらを使用すると"pending"のステータスから"terminated"となり起動しません。
また"euca-upload-bundle"の"-b"オプションの引数で状況に応じて、"BUCKET_KERNEL","BUCKET_INITRD","BUCKET_IMAGE"の3つの変数を使い分けていますが、 これはprefixと考えて、1つの文字列を使い回すのが良いようです。
ざっとこんな感じで、イメージを起動する事はできましたが、これだけだとあまり活用する目処は立たないですね。 もう少し周辺の情報を集めてみようと思います。
0 件のコメント:
コメントを投稿