orenoblog

エンジニアになりたいExcel方眼紙erの物語

イメージを自作する(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     

外部端末からのアクセス
ブラウザからアクセスして確認します。

外部からアクセスできました。
これで自作イメージの起動確認&カスタマイズはじめの一歩は完了です。