Ubuntu Weekly Recipe

第345回 UbuntuとOpenNebulaでクラウド環境を構築してみよう(前編)

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

フロントエンドセットアップ

今回はフロントエンドにOpenNebulaデーモン⁠oned⁠と,Webインターフェース⁠Sunstone⁠をインストールします。 また,今回の例ではNFSでストレージを共有しますので,フロントエンドでNFSサーバーのセットアップも行います。

  1. OpenNebulaインストール
  2. OpenNebula Sunstoneインストール
  3. Rubyライブラリインストール
  4. SSH鍵設定とNFSサーバ設定

と言う作業にになります。

OpenNebulaインストール

opennebulaパッケージをインストールします。

% sudo apt-get install opennebula

依存関係でそれなりの数のパッケージがインストールされます。インストールが終わるとonedが起動した状態となります。 インストールの際にoneadminというUNIXアカウントが作成されます。ホームディレクトリは/var/lib/oneです。 onedはoneadminユーザー権限で稼働します。onedが実行するコマンドのうち一部root権限が必要なもののために,/etc/sudoers.d/opennebulaが作成されています。 また,oneadminのSSH鍵ペア作成とOpenNebula初期パスワードの設定もこの段階で終わっています。

oneadminユーザーにスイッチし,CLIでonedにアクセスできるか確認します。onevm listコマンドを実行し,下記の出力結果であれば問題ありません。

% sudo -i -u oneadmin
$ onevm list
    ID USER     GROUP    NAME            STAT UCPU    UMEM HOST             TIME

$ exit

OpenNebula Sunstoneインストール

WebインターフェースのSunstoneをインストールします。

% sudo apt-get install opennebula-sunstone

インストールが終わるとSunstoneが起動した状態となります。 Sunstoneはデフォルトではループバックインターフェース127.0.0.1のみをリッスンします。リモートからのアクセスを受け付けるために,/etc/one/sunstone-server.confの「:host:」の値をリッスンしたいネットワークインターフェースのIPアドレスに変更しします。 今回はフロントエンドのeth0に振られたアドレスでリッスンすることにします。筆者の環境では192.168.1.50ですが,アドレスなどは適宜変更してください。

% ifconfig eth0
eth0      Link encap:イーサネット  ハードウェアアドレス 52:54:00:d9:ec:36
          inetアドレス:192.168.1.50  ブロードキャスト:192.168.1.255  マスク:255.255.255.0
(省略)
% sudo vi /etc/one/sunstone-server.conf

変更内容は以下になります。

:host: 192.168.1.50

変更後にSunstoneを再起動して設定を反映させます。

% sudo service opennebula-sunstone restart

リモートのマシンから⁠http://(フロントエンドのIPアドレス):9869/⁠にアクセスし,ログイン画面図11が表示されれば問題ありません。

図11 OpenNebula Sunstoneログイン画面

図11 OpenNebula Sunstoneログイン画面

oneadminユーザーでログインしてみましょう。パスワードはoneadminユーザーのホームディレクトリの.one/one_authに記載されています。

% sudo -i -u oneadmin
$ cat ~/.one/one_auth
oneadmin:Ojhymlypish7

“:⁠で区切られた左側がユーザー名(上記の例ではoneadmin)⁠右側がパスワード(上記の例ではOjhymlypish7)です。パスワードはインストール時にランダムで作成されますので,適宜読み替えてください。 ログインするとダッシュボードが表示されます図12)⁠

図12 ダッシュボード

図12 OpenNebula ダッシュボード

この時点ではまだホストのセットアップやリソース設定が終わっていないので,これといっておもしろいことはできません。

Rubyライブラリインストール

OpenNebulaのいくつかのコンポーネントは複数のRubyライブラリを使用します。OpenNebulaはこれらのライブラリや依存パッケージをインストールするinstall_gemsスクリプトを用意しています注8)⁠ install_gemsスクリプトはroot権限で実行します。

% sudo /usr/share/one/install_gems

依存するパッケージがインストールされた後,OpenNebulaが使用するgemがインストールされます。インストール終了後にOpenNebula関連のデーモンを再起動してください。

% sudo service opennebula restart
% sudo service opennebula-sunstone restart
注8)
インストールしなくてもonedは動作しますが,Rubyで書かれたコンポーネントの一部が正常に動作しない場合があります。

SSH鍵設定とNFSサーバ設定

OpenNebulaはフロントエンドとホスト間の操作などをSSH経由で行います。そのためフロントエンドとホスト間でoneadminユーザーがノーパスフレーズでログインできる必要があります。 oneadminユーザーが作成された際に,oneadminユーザーのノーパスフレーズSSH鍵ペアが自動的に作成されています。 このSSH鍵ペアを,フロントエンドを含むすべてのマシンで共有する必要があります。これには,

  • oneadminのホームディレクトリを全ホストでNFSマウントする
  • oneadminの~/.sshをtarなどでアーカイブして全てのホストにコピーする

などの方法を取ります。 今回はフロントエンドのoneadminのホームディレクトリをNFSで共有することにします。

まず,oneadminのSSH公開鍵をoneadminのauthorized_keysに追加し,~/.ssh/configを編集します。

% sudo -i -u oneadmin
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ vi ~/.ssh/config
$ chmod 600 .ssh/config

~/.ssh/configの内容は下記になります。

Host *
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

NFSサーバをインストールし,/etc/exportsを編集してoneadminのホームディレクトリをエクポートします。

% sudo apt-get install nfs-kernel-server
% sudo vi /etc/exports
% sudo exportfs -av

/etc/exportsは下記の内容とします。

/var/lib/one/ *(rw,sync,no_subtree_check,root_squash)

OpenNebulaが管理する仮想マシンのディスクイメージは,oneadminのホームディレクトリ/var/lib/one以下に置かれます。 ファイルシステムに充分な余裕がない場合には,この時点で/var/lib/oneを別の大きなファイルシステムにmvし,シンボリックリンクを貼っておきましょう。

以下は/var/lib/oneをより大容量のファイルシステム/workに移動する場合の例です。

% sudo service opennebula-sunstone stop
% sudo service opennebula stop
% sudo mv /var/lib/one /work
% sudo ln -s /work/one /var/lib/one
% sudo service nfs-kernel-server restart
% sudo service opennebula start
% sudo service opennebula-sunstone start

著者プロフィール

大田晃彦(おおたあきひこ)

株式会社 創夢 所属。UbuntuとGentooでアニメを録画したりしながら暮らしています。全体的に浅いです。

コメント

コメントの記入