ネットワークもできたので、そろそろ仮想環境を扱う喜びに触れたいと思います。
ここでは、既存のVMイメージを利用して、SSHログインするとこまでとします。
前準備
まず、Glanceのイメージリストが、空表示で正常終了することを確認します。
1 |
glance image-list |
もし HTTPInternalServerError (HTTP 500) になる場合、
/var/log/glance を確認してください。
今回は、db_syncで解決することができました。
1 2 |
glance-manage db_sync glance image-list |
ttylinuxイメージの登録
最小Linuxイメージである、ttylinuxを登録します。イメージの保存先は、ここではデフォのローカル( /var/lib/glance/images/ )としますが、後々SwiftやCephへの保存も紹介すると思います。イメージファイルの取得
適当な場所にダウンロードして展開します。
1 2 3 4 5 6 7 |
mkdir /usr/local/src/vmimage cd /usr/local/src/vmimage wget http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz mkdir ttylinux-uec-amd64-12.1 cd ttylinux-uec-amd64-12.1 tar xzf ../ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz |
イメージの登録
このttylinuxは、EC2と同じ形式、AMI(root)・AKI(Kernel)・ARI(initrd ramdisk)で登録します。
1 2 3 4 5 6 7 8 9 10 11 12 |
KERNEL_ID=`glance image-create \ --name="tty-linux-kernel" --disk-format=aki --container-format=aki \ < ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz | awk '/ id / { print $4 }'` INITRD_ID=`glance image-create \ --name="tty-linux-ramdisk" --disk-format=ari --container-format=ari \ < ttylinux-uec-amd64-12.1_2.6.35-22_1-loader | awk '/ id / { print $4 }'` glance image-create \ --name="tty-linux" --disk-format=ami --container-format=ami \ --property kernel_id=${KERNEL_ID} --property ramdisk_id=${INITRD_ID} \ < ttylinux-uec-amd64-12.1_2.6.35-22_1.img glance image-list |
nova情報の確認
この辺で、novaから見て元気かどうか確認しておきます。
1 2 3 4 5 6 7 8 9 |
# 起動済みVMのリストなのでまだ空 # - 接続できない場合 nova --debug list で確認する nova list # VMイメージリスト nova image-list # VM起動時に指定するスペックのリスト。デフォでEC2っぽく入っている nova flavor-list |
SSH公開鍵の登録
SSHの公開鍵を登録しておくと、VM起動時に自動的に公開鍵をVM内に送り込んでくれます。するとVMに秘密鍵でログイン可能になるので、出来上がってるイメージではこの方法をとります。
別投稿で書きますが、独自にOSイメージを作成する場合は
ssh -p22 root@host
でログインできるようにインストールしておいて、あとは好きな様にうにゃうにゃ・・・という方法も使えるので必須ではありません
ssh -p22 root@host
でログインできるようにインストールしておいて、あとは好きな様にうにゃうにゃ・・・という方法も使えるので必須ではありません
1 2 3 4 5 6 |
cd ssh-keygen ls -l .ssh/id_rsa .ssh/id_rsa.pub nova keypair-add --pub_key .ssh/id_rsa.pub username nova keypair-list |
セキュリティの設定
VMとの通信許可を操作するのに、nova secgroup を利用します。実行すると裏でiptablesをイジってくれます。
ここではdefault(全VM)でping,http,sshの基本ポートを通しています。
1 2 3 4 5 6 7 8 9 |
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 nova secgroup-add-rule default tcp 80 80 0.0.0.0/0 nova secgroup-list nova secgroup-list-rules default # 直接確認してみる iptables -nvL | less iptables -nvL -t nat | less |
インスタンス起動
利用するVMイメージと、ネットワークを指定して起動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
TTY_LINUX=$(nova image-list | grep "tty-linux " | awk '{print $2}') NET_ID=$(quantum net-show $(quantum net-list | grep admin-private-01 | awk '{print $2}') | grep " id" | awk '{print $4}') nova boot --flavor 1 --image $TTY_LINUX --key_name username --security-groups default --nic net-id=$NET_ID test-instance-01 # 数秒後に確認 nova list nova show test-instance-01 # コンソールログ less /var/lib/nova/instances/instance-00000001/console.log # ping ... namespace指定と両方確認 ping 172.31.0.11 ip netns exec qrouter-$(quantum router-list | grep " admin-router-01 " | awk '{print $2}' ) \ ping 172.31.0.11 # SSH接続 ssh -p22 -i ~/.ssh/id_rsa root@172.31.0.11 |
floatingIPの付与
floatingIPのネットワークにアドレスを作成し、VMに割り当てます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# IP払い出し quantum floatingip-create admin-public-01 # インスタンスに割り当て ... 引数ではアドレスからFloatingIPとVMポートのIDを取得している quantum floatingip-associate \ $(quantum floatingip-list | grep "192.168.141.211" | awk '{print $2}') \ $(quantum port-list | grep 172.31.0.11 | awk '{print $2}') # フローティングIPが仮想マシンに紐付いたことを確認 quantum floatingip-list # HostOSや外部サーバから接続してみる ping 192.168.141.211 |
他の既存VMイメージ
ttylinuxだけではなく、Ubuntu, Fedora のVMイメージも公開されています。手順はほぼ同じで、異なる点はDiskフォーマットがqcow2であるくらいなので詳細は省略します。
その他
Horizon管理画面
いったん手動でやりましたが、Horizonでも作成・削除ができるか確認しておきます。それと、VMリストからコンソール画面へもいけるので、コンソール操作ができるか確認します。
もしできなければ、novncの設定を見なおしてください。(色々詰まったとこなので別途投稿するかも…)
VMから外部への接続
VMへログインしたら、ping 8.8.8.8 や ping google.co.jp で外部接続やDNSの確認をしてください。
もしVM起動ログに、http://169.254.169.254/ への接続ができないエラーが出ていたら、前投稿のネットワーク設定を確認してみてください。この接続は、quantumがiptablesで通るように解決してくれているはずですが、ネットワークの設定に失敗していたら通らないので、解決すると一気にスッキリするはずです。
VMのDNS設定
VMの /etc/resolv.conf を書き換えても、quantum subnet の –dns_nameservers の値に勝手に書きなおされます。
他にもこういったHostOSに強制される設定があるかもなので、
こういう仕様があることを知っておくとよさそうです。
次回は既存イメージではなく、独自のOSイメージを作成する手順を紹介します。