次は、配布されているイメージファイルを利用するのではなく、自分でイメージファイルを作ってみます。
要はisoインストールイメージさえあればなんでもできる、ということなので、例はDebianにしますが、Ubuntu, CentOS, Fedora, Scientific Linux となんでも作ることができます。
インストールイメージの入手
Debianのisoファイルはこの辺にありますが、今回はどうせtestingならということで、最新を落として来ました。
1 2 3 4 |
mkdir /data/vmimage cd /data/vmimage wget http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso mv debian-testing-amd64-netinst.iso debian-7.0testing-adm64-netinst.iso |
OSインストール
OSイメージとなるファイルを作成しておきます。容量は後で変えれなくもないですが、基本的にはこれが rootパーティション(/)の容量になると思っておいたほうがよいです。
1 |
qemu-img create -f qcow2 debian-7.0testing.img 10G |
次にインストーラを起動します。
注意事項をいくつか。
1 2 3 |
kvm -m 1024 -cdrom debian-7.0testing-adm64-netinst.iso \ -drive file=debian-7.0testing.img,if=virtio,index=0 \ -k ja -boot d -net nic -net user -nographic -vnc :99 |
立ち上げたら、手元のPCで適当なVNCソフトを使ってコンソール接続します。RealVNC, TightVNC, UltraVNC などなんでもよいです。接続情報はHostOSの管理アドレスと、指定したVNCポートなので、こんな感じです。
1 2 |
[接続情報] 192.168.140.3:99 |
あとは普通にOSインストールなので好きにやればOKですが、必須事項としては
の2点だけで、他のどーでもいぃメモとしては
インストールが終わって、再起動して無事VMのOSが起動したら、いったん落とします。
1 |
shutdown -h now |
VMの設定
落としたらまた起動します。一度落とした理由は、単にイメージファイル指定で起動することを確認したかっただけなので、慣れたら起動したまま次の作業をしても大丈夫です。
1 2 |
kvm -m 1024 -drive file=debian-7.0testing.img,if=virtio,index=0 \ -k ja -boot c -net nic -net user -nographic -vnc :99 |
起動したら、またPCからVNC接続します。
アカウント
一般ユーザがいらなければ消しておきます。
1 |
deluser --remove-home user |
ファイルの確認
この辺から好みですが、基本ファイルの中身は確認しておきます。ネットワークのUDEV削除
VMとしては邪魔になるので、ファイルが存在していたら削除します。
1 |
rm /etc/udev/rules.d/70-persistent-net.rules |
SSH公開鍵取得スクリプト
もし、基本的なSSHサーバへrootユーザログインではなく、OpenStackの機能であるキーペアの公開鍵をVMに送り込んで利用したい場合は、このスクリプトを実行するようにしておきます。/etc/rc.local
1 2 3 4 5 6 7 8 9 |
# for openstack key pair mkdir -p /root/.ssh echo >> /root/.ssh/authorized_keys curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key \ | grep 'ssh-rsa' >> /root/.ssh/authorized_keys echo "AUTHORIZED_KEYS:" echo "************************" cat /root/.ssh/authorized_keys echo "************************" |
ここまでできたら、shutdownして、イメージは完成です。
Glanceに登録
できたimgファイルをGlanceに登録します。最小構成ならば1~2GB程度に収まるはずです。
1 2 3 4 |
glance index glance add name=Debian-7.0 is_public=true \ disk_format=qcow2 container_format=ovf < debian-7.0testing.img glance index |
インスタンス作成
VMの起動
イメージとネットワークを指定して起動します。初回はGlanceからイメージを落としてくるのに時間がかかりますが、Glanceのキャッシュが有効ならばローカルにイメージファイルが置かれるので、2度目以降のイメージはすぐ起動してくれます。
1 2 3 4 5 6 7 8 9 10 |
IMAGE=$(nova image-list | grep " Debian-7.0 " | awk '{print $2}') NETWORK=$(quantum net-list | grep " admin-private-01 " | awk '{print $2}') nova boot --flavor 1 --image $IMAGE --key_name username --security-groups default \ --nic net-id=$NETWORK debian-70-base-20130401 # BUILD -> ACTIVEになったらOK nova list # 通信確認 (ip netns経由は省略) ping 172.31.0.11 |
floating ip割り当て
新規作成と、割り当てを行います。
1 2 3 4 5 |
quantum floatingip-create admin-public-01 quantum floatingip-associate \ $(quantum floatingip-list | grep "192.168.141.209" | awk '{print $2}') \ $(quantum port-list | grep "172.31.0.11" | awk '{print $2}') quantum floatingip-list |
SSHログイン
fixed ipでも、floating ipでも好きな方で接続確認します。
1 2 3 4 5 |
# openssh-serverへrootログイン ssh -p22 root@192.168.141.209 # キーペアを利用する場合。パス無しになる ssh -p22 -i ssh/openstack.id_rsa root@192.168.141.209 |
rootでSSHログインできれば、あとはアカウント周りを含めて、個々の好きなように初期設定すればよく、ひと通り終わったらスナップショットをとっておいたり、Puppet/Chefなどで基本設定管理するなどして運用していくことになります。
Glanceにイメージ登録するのはたいした手間じゃないので、開発環境であれば、一般的なLinuxを4~5個用意しておいて皆に勝手に選んで使ってもらうのが幸せな道ではないでしょうか。
Grizzlyがリリースされてアレですが、多分まだ続きます・・・