以前の記事で、DevStack を使って OpenStack 環境を構築したが、再起動すると設定が消えてしまうなど、あまり使い勝手が良いとは言えなかった。そもそも DevStack はその名の通り開発者向けなので、常用には向かない。
他に良い手段がないか探していたところ、hagistack というのを見つけたので、試してみることにする。今回はコントローラとコンピュートノードを1つのマシンで兼ねる、オールインワン構成にする。
Ubuntu Server のインストール
今回も適当なマシンを用意して、Ubuntu Server 13.04 (ubuntu-13.04-server-amd64.iso) をクリーンインストールする。ポイントは以下の通り。
- IP アドレスを固定にする
- OpenSSH server をインストールする (必須ではない)
- LVM で “cinder-volumes” という名前の Volume Group を用意する
ディスクを1つで済ませる場合は、下記のような感じでパーティションを設定する。Ubunutu のバグなのか、1つめの VG の容量表示がおかしいので注意する。
インストール
hagistack のドキュメント通りにインストールする。
まず apt-get で git をインストールする。
$ sudo apt-get -y install git
適当なディレクトリを作り、GitHub から hagistack を clone する。
$ mkdir ~/repos
$ cd ~/repos
$ git clone https://github.com/hagix9/hagistack
$ cd hagistack/ubuntu13.04
設定ファイルを作成する。
$ vi stack.env
STACK_USER=<UNIX ユーザ名>
NOVA_CONTOLLER_IP=<ホストの IP アドレス>
NOVA_CONTOLLER_HOSTNAME=<ホスト名>
NOVA_COMPUTE_IP=<ホストの IP アドレス>
FLOAT_IP_RANGE=<フローティング IP アドレスのレンジ>
フローティング IP アドレスのレンジは、ホストが属するネットワークから適当な範囲を割り当てる。CONTOLLER の綴りは元のスクリプトの通り。
そしてスクリプトを実行して、OpenStack をインストールする。
$ bash ./hagistack_controller.sh
ログイン
インストール後、以下の URL にアクセスすれば、OpenStack の Web UI (horizon) のログイン画面が表示される。
http://<ホストの IP アドレス>/horizon/
ユーザ名: admin, パスワード: secrete でログインできる。
インスタンスの生成
早速 horizon でインスタンス (仮想マシン) を生成してみる。
「プロジェクト -> インスタンス -> イメージの起動」からインスタンスを生成する。しかし張り切って [起動] ボタンを押したものの、Error になった。
先輩のアドバイスから、ログのエラーメッセージを調査してみる。
$ grep -in error /var/log/nova/*
すると、nova-network.log から以下のようなエラーメッセージが見つかった。
Cannot find device "eth0"
たしかに ifconfig -a してみると、”eth0″ ではなく “p5p1” となっていた。nova.conf を下記のように変更し、OS を再起動したところ、無事インスタンスを生成できるようになった。
$ sudo diff /etc/nova/nova.conf.bak /etc/nova/nova.conf
30c30
< flat_interface=eth0
---
> flat_interface=p5p1
その後、フローティング IP アドレスを割り当てたにも関わらず外部から通信できずにつまづいたが、セキュリティグループを適切に設定したら無事通信できた。
なお、例えばインスタンスの一覧を表示したいときなど、コマンドラインで nova コマンドを実行する場合は、次のようにして事前に keystonerc の環境変数を読み込んでおく。
$ . ~/keystonerc
$ nova list
しばらく使ってみたが、今のところ他には特に問題なく動いている。
hagistack 作者の萩原さんに、この場を借りてお礼申し上げます。
参考ページ
- hagistack
- README.md
- Openstack のインストーラの紹介及びインストール後に利用する OS イメージの作成方法について – オープンソースカンファレンス2012 Kyoto
コメント
CONTOLLERのスペル。。
ずっと知らなかったのでそのうち直させてください。
あとコントローラのほうのスクリプトを実行すればコンピュートのほうは実行しなくてもオールインワンであれば大丈夫です。
> コンピュートのほうは実行しなくても
ご指摘ありがとうございます。修正しました。