イメージを自作する(ubuntu) の続き
前回途中で失敗した続きです
ディスク容量確保のため、色々弄ってみたところ、Glanceとの疎通がとれなくなってしまったので
ハードだけ変更して作り直しました。
構成は以前と変わっていません
ワークディレクトリ:/mnt/data/image
イメージファイル:ubuntu-server.img
Kernelファイル:vmlinuz-2.6.38-8-server
RAMファイル:initrd.img-2.6.38-8-server
今回はイメージの登録方法を変更しました。
uec-publish-imageで登録すると各ファイルが独立してしまったり、引数が長くなるので
nova-manage image convertで一括登録できるようにします。
1.ディレクトリの準備
各ファイルを格納するディレクトリを準備します。
$ mkdir /mnt/data/image/ubuntu-server $ mkdir /mnt/data/image/ubuntu-server/aki-ubuntu $ mkdir /mnt/data/image/ubuntu-server/ari-ubuntu $ mkdir /mnt/data/image/ubuntu-server/ami-ubuntu
2.定義ファイルの準備とイメージ登録
カーネル,RAM,イメージそれぞれに1つのjsonファイルを作成します
$ cd /mnt/data/image/ubuntu-server $ vi aki-ubuntu/info.json { "imageId": "aki-ubuntu", "imageLocation": "nova/ubuntu-kernel", "imageOwnerId": "admin", "imageState": "available", "type": "kernel", "isPublic": true, "architecture": "x86_64" } $ vi ari-ubuntu/info.json { "imageId": "ari-ubuntu", "imageLocation": "nova/ubuntu-ramdisk", "imageOwnerId": "admin", "imageState": "available", "type": "ramdisk", "isPublic": true, "architecture": "x86_64" } $ vi ami-ubuntu/info.json { "imageId": "ami-ubuntu", "kernelId": "aki-ubuntu", "ramdiskId": "ari-ubuntu", "imageLocation": "myImage/ubuntu", "imageOwnerId": "admin", "imageState": "available", "type": "machine", "isPublic": true, "architecture": "x86_64" }
jsonファイルを作成したディレクトリに、各ファイルをリネーム移動します。
$ sudo -i # cd /mnt/image/ # mv ubuntu-server.img ubuntu-server/ami-ubuntu/image # mv vmlinuz-2.6.38-8-server ubuntu-server/aki-ubuntu/image # mv initrd.img-2.6.38-8-server ubuntu-server/ari-ubuntu/image
イメージを登録して確認します。
# nova-manage image convert ubuntu-server Image ari-ubuntu converted to 4 (00000004). Image aki-ubuntu converted to 5 (00000005). Image ami-ubuntu converted to 6 (00000006). euca-describe-images IMAGE ami-00000006 myImage/ubuntu (ami-ubuntu) available public x86_64 machine aki-00000005 ari-00000004 instance-store IMAGE aki-00000005 nova/ubuntu-kernel (aki-ubuntu) available public x86_64 kernel instance-store IMAGE ari-00000004 nova/ubuntu-ramdisk (ari-ubuntu) available public x86_64 ramdisk instance-store IMAGE ami-00000003 demo/tty (ami-tty) available public x86_64 machine aki-00000001 ari-00000002 instance-store IMAGE ari-00000002 nova/tty-ramdisk (ari-tty) available public x86_64 ramdisk instance-store IMAGE aki-00000001 nova/tty-kernel (aki-tty) available public x86_64 kernel instance-store
3.イメージの起動
イメージを起動します。
今回作成したイメージは、通常のパスワード認証が可能なので-kオプションはいらないです・・
が、指定しておきましょう
# euca-run-instances -t m1.tiny -k ubuntu_key ami-ubuntu # euca-describe-instances RESERVATION r-t3ctmqjh nova-project default INSTANCE i-00000009 ami-00000006 10.0.1.3 running ubuntu_key (nova-project, server1) 0 m1.tiny 2011-11-06T05:48:29Z nova aki-00000005 ari-00000004 # ssh myadmin@10.0.1.3 myadmin@10.0.1.3's password: <password> myadmin@ubuntu:~$ hostname ubuntu myadmin@ubuntu:~$ uname -a Linux ubuntu 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux myadmin@ubuntu:~$ ifconfig eth0 Link encap:イーサネット ハードウェアアドレス 02:16:3e:2f:37:0d inetアドレス:10.0.1.3 ブロードキャスト:10.0.1.255 マスク:255.255.255.0 inet6アドレス: fe80::16:3eff:fe2f:370d/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:3894 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:2217 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:3597475 (3.5 MB) TXバイト:235962 (235.9 KB) 割り込み:11 ベースアドレス:0xe000 lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:16436 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B)
これで自作イメージの起動は完了です。
起動に成功しましたが、このままではComputeノード外からアクセス出来ません。
また、sshdしか稼動していないので面白くありません。
試しにWebサーバを稼働させて外部(今回は私が所有しているMac)からアクセスしてみましょう
4.Webサーバを稼働させて、外部からアクセスする。
floating IPの割当
AWSでいうところのElastic IP Addressesに相当する、らしいです
(恥しながらAWSを利用したことが無いのでよくわかりません><)
今回起動した自作イメージのインスタンス番号はi-00000009です。
このインスタンス番号にFloating IPを割り当てます。
# nova-manage floating list None 192.168.33.128 None None 192.168.33.129 None None 192.168.33.130 None None 192.168.33.131 None None 192.168.33.132 None None 192.168.33.133 None None 192.168.33.134 None None 192.168.33.135 None None 192.168.33.136 None None 192.168.33.137 None None 192.168.33.138 None None 192.168.33.139 None None 192.168.33.140 None None 192.168.33.141 None None 192.168.33.142 None None 192.168.33.143 None # euca-associate-address -i i-9 192.168.33.129 # nova-manage floating list None 192.168.33.128 None server1 192.168.33.129 server-9 None 192.168.33.130 None None 192.168.33.131 None None 192.168.33.132 None None 192.168.33.133 None None 192.168.33.134 None None 192.168.33.135 None None 192.168.33.136 None None 192.168.33.137 None None 192.168.33.138 None None 192.168.33.139 None None 192.168.33.140 None None 192.168.33.141 None None 192.168.33.142 None None 192.168.33.143 None
ポートの開放
外部からWebサーバのポートにアクセスできるよう開放します
今回はデフォルトの80です
# euca-authorize -P tcp -p 80 default default None None tcp 80 80 0.0.0.0/0 GROUP default PERMISSION default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
これで外部からアクセスする準備は整いました。
インスタンスにアクセスして、Webサーバを稼働させてみたいと思います。
インスタンスにWebサーバをインストール
# ssh myadmin@10.0.1.3 myadmin@10.0.1.3's password: <password> myadmin@ubuntu:~$ sudo apt-get install -y apache2 [sudo] password for myadmin: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert 提案パッケージ: apache2-doc apache2-suexec apache2-suexec-custom openssl-blacklist 以下のパッケージが新たにインストールされます: apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert ・・省略・・ myadmin@ubuntu:~$ ps aux|grep apache2 root 1347 0.0 0.5 71664 2848 ? Ss 15:05 0:00 /usr/sbin/apache2 -k start www-data 1349 0.0 0.3 71396 1916 ? S 15:05 0:00 /usr/sbin/apache2 -k start www-data 1351 0.0 0.6 295316 3108 ? Sl 15:05 0:00 /usr/sbin/apache2 -k start www-data 1352 0.0 0.5 295224 2876 ? Sl 15:05 0:00 /usr/sbin/apache2 -k start myadmin 2352 0.0 0.2 10100 1044 pts/0 S+ 16:09 0:00 grep --color=auto apache2 myadmin@ubuntu:~$ netstat -an |grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
外部端末からのアクセス
ブラウザからアクセスして確認します。
外部からアクセスできました。
これで自作イメージの起動確認&カスタマイズはじめの一歩は完了です。