Ubuntu Weekly Recipe

第341回 OpenStack環境を30分で構築する

この記事を読むのに必要な時間:およそ 5 分

今回はOpenStack installerを使って,そこそこのスペックだけれどもNICが1枚しかないPCに,OpenStack環境をコマンド1つ,たった30分で構築する方法をご紹介します。

OpenStackをインストールするということ

OpenStackと言えば,現在のクラウドコンピューティング世界を支えるクラウドプラットフォーム構築ソフトウェアの1つで,フリーソフトウェアというだけでなく,豊富な機能と活発な開発コミュニティによって幅広く利用されています。

そんな「クラウド」を語るうえで欠かせない存在になりつつあるOpenStackですが,そのインストールは難解です。Ubuntuは比較的初期の段階からインストールしやすいほうではありましたが,それでもJujuだのJuju Deployerだの続々とインストールアシストツールが出る程には難しい状態でした。

ただソフトウェアのインストールと設定が複雑というだけでなく,その性質上複数台のコンピューターが必要だったり,NICを複数用意しなくてはいけなかったりと,一般的なPCで「ちょっと試してみよう」というにはハードルが高かったのです。

そんな中,新しいインストールアシストツールとしてUbuntu OpenStack installerが公開されました。これを使えば,それなりのスペックを持った1台のPC(NICは1枚)に,OpenStackのNova,Glance,Neutron,Keystone,Horizonをコマンド1つで構築できます注1)。それなりのスペックとは,次のような構成になります注2)。

  • 仮想化支援機能がついた8コアのCPU
  • 12GバイトのRAM
  • 20Gバイト程度のHDD

NICは1枚でかまいません。いくつかのサービスをKVM上で動かすために,ハードウェアの仮想化支援機能は必須です。上記より多少劣るスペックのPCでも動くことは動きますが,いろいろと動作が重くなります。

設定の柔軟性もほとんどありませんので,次のような方向けのツールです。

  • なんでもいいからとりあえず動くOpenStack環境が欲しい
  • 一般的なご家庭なのでPCなんてメインの1台しかない
  • ハイスペックな1台をイベント会場に持ち込んでデモしたい
注1)
平たく言うとPackstackのUbuntu版です。
注2)
今回紹介するシングルインストールの他に,MAASを使ったマルチインストールモードもあります。マルチインストールモードのときは,必要なPCの台数が増えるかわりに,個々のスペックはもう少しおさえられます。

マシンを用意する

実際にUbuntu OpenStack installerを使って,インストールしてみましょう。と言っても,そんなにハイスペックなPCがそこら辺に転がっているはずもありません注3)。デモ向けやお試しと言う用途を考えると,ハイスペックマシンを新規購入するよりはクラウドリソースを使った方が安上がりです。

OpenStack installerはKVMを利用します注4)。このためクラウドリソース上でKVMを使えることが必須要件となります。残念ながらAmazon EC2やさくらのクラウド,Windows AzureはKVM on XenやNested KVMなどを許容していないようです。それに対してVPSである,CloudCore VPSやConoHaはNested KVMに対応しています。EC2などに比べると月額料金になってしまうため高くなりがちですが,それでも一時的な目的のために物理マシンを買うよりはお得です。

今回はConoHaの「4GB/4コア/400GB」プランを契約し,Ubuntu 14.04 LTSをインストールして確認しています。ちなみに,このプランではOpenStackがなんとか動いていると言った具合です。メモリはスワップを3Gバイトほど使っていますし,OpenStackのDashboardも表示までにそれなりに時間がかかっています。お財布に余裕があるならもう少し上のプランにしても良いでしょう注5)。

注3)
Orange Boxが転がっているご家庭なら存在するようですが,内蔵NUCのスペックだとシングルインストールは厳しく,むしろマルチインストール向けでしょう。
注4)
LXCの上にKVMで環境を構築し,そのKVMの上にLXCで複数の環境を共存させています。
注5)
VPSのサービスによってはクーポンなどもついているのでそれを使うと良いでしょう。

インストールしてみる

OSとしてあらかじめUbuntu 14.04 LTSをインストールし,最新状態にアップデートしておいてください。

まずはOpenStack installerのPPAを追加し,パッケージをインストールします。ちなみにPPAにはDevelとStableとExperimentalがありますが,Stableは若干機能が古く,Experimentalはたまに使われる程度ですので,今回はDevelを使います。このDevelはリポジトリのコードをデイリービルドしていますので,試すタイミングによってはこの記事と状況が変わっている可能性があることに注意してください。

$ sudo apt-add-repository ppa:cloud-installer/ppa
$ sudo apt update
$ sudo apt install cloud-installer

追記(2015/11/14)

現在はPPAの構成が変わっているため上記の方法ではインストールできません。次の手順を試してみてください。

$ sudo apt-add-repository ppa:cloud-installer/stable
$ sudo apt update
$ sudo apt install openstack

また,これ以降のコマンド名「cloud-install」はすべて「openstack-install」に読み替えてください。

次にcloud-installコマンドでOpenStackのインストールを開始します。ただしその前に,cloud-installコマンドを編集してタイムアウト時間を変更しておきましょう。このコマンドはLXCを使ってOpenStack用のインスタンスを作成するのですが,ネットワーク環境によってはこの処理に時間がかかり過ぎてしまい,コマンドがタイムアウトになってしまうことが多いためです注6)。タイムアウト時間の初期値は50秒なので,これを大きくしておきます。ちなみに大きくしたところで,他の処理に時間がかかるなど悪影響が出るわけではありませんので,好きなだけ大きくしておくと良いでしょう。

$ sudo editor /usr/share/cloud-installer/cloud-install

(ファイルの最後のほうにあるmax_triesの数を50から任意の値に増やす)

    wait_for_running()
    max_tries = 500
    while not cloud_init_finished() and max_tries != 0:
        print("* Waiting for container to finalize, please wait ...")
        max_tries = max_tries - 1
        time.sleep(1)

あとはcloud-installコマンドを実行するだけです。

$ sudo cloud-install

そのまま数分待つと,インストールタイプ選択画面が出ます。今回は「Single system」を選択します。「Multi-system」「Landscape」はMAASを使った構築方法で,NICなど設定項目が増えます。

「Single system」の場合はあとは「OpenStack admin user password」でOpenStackの管理者のパスワードを設定するだけです。推奨環境を満たしていない場合は警告が表示されますが,気にせずOKを押しましょう。30分から1時間ほど待てば,すべてのインストールが完了します。

注6)
具体的には「sudo: /usr/share/cloud-installer/bin/cloud-install-bootstrapped: command not found」のようなエラーメッセージが表示されるはずです。

環境のアンインストール

OpenStack installerはまずその環境にLXCでOpenStack用のコンテナー(コンテナー名:uoi-bootstrap)を作成します。以降はuoi-bootstrapコンテナーの中で,再度OpenStack installerやJujuの最新版をインストールして,そこでインストールステップを開始するのです。このため,uoi-bootstrapさえ破棄すれば,cloud-installで実行した作業を巻き戻せます。具体的にはcloud-installコマンドに-uオプションを渡して実行すれば,アンインストールになります。

$ sudo cloud-install -u

もし,cloud-installコマンドに失敗した場合は,一度-uオプションで環境を戻してからやり直すと良いでしょう。

状態表示とマシンの管理を行うcloud-statusコマンド

OpenStackのインストールジョブ投入が一通り終わると,OpenStack installerはcloud-statusコマンドを実行し,ジョブの完了を待ちます。

図1 すべてのサービスが立ち上がったあとのcloud-statusの画面

図1 すべてのサービスが立ち上がったあとのcloud-statusの画面

もし数十分待ってもcloud-statusが上記のような画面にならない場合は,一度Ctrl+Cなどで強制終了させたあとに,uoi-bootstrapコンテナーの中で,cloud-statusを実行してみてください。

$ sudo lxc-attach -n uoi-bootstrap -- cloud-status

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入