Ubuntu Weekly Recipe

第484回 UbuntuとOpenNebulaでKVMとLXDのインスタンスを起ち上げてみよう

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

LXD用ホストをセットアップする

続いてホスト側の作業です。こちらもOpenNebulaのKVM用ホストの標準的なセッティングが終わっているものとします。

パッケージとPythonライブラリインストール

LXDoNeのドライバスクリプトが動作するために必要なパッケージをインストールします。

$ sudo apt install lxd lxd-tools python-pylxd/xenial-updates criu bridge-utils python-ws4py python-pip

pipコマンドでPythonライブラリのisoparserをインストールします。

$ sudo pip install isoparser

SunstoneのVNCコンソール接続用に,svnctermをインストールします。GitHubのLXDoNeのリポジトリにUbuntu 16.04向けにコンパイルしたsvnctermパッケージが公開されているので,これをダウンロードしてインストールします。

$ wget https://github.com/OpenNebula/addon-lxdone/releases/download/v5.2-4.1/svncterm_1.2-1ubuntu_amd64.deb
$ sudo apt install ./svncterm_1.2-1ubuntu_amd64.deb

UNIXアカウントoneadminの権限設定

UNIXアカウントoneadminがパスワード入力なしでsudoできるように設定します。強力な権限を与えることになるので気をつけましょう。あわせて,oneadminをlxdグループに所属させます。

$ sudo bash -c 'echo "oneadmin ALL= NOPASSWD: ALL" >> /etc/sudoers.d/lxdone'
$ sudo usermod -a -G lxd oneadmin

LXDセットアップ

ホスト上でlxd initコマンドを実行し,LXDの初期設定を行います。この例は以下の内容で初期化しています※3)⁠

※3
network-address,trust-password,network-portはネットワーク越しにホスト上のLXDサービスを操作したい時に設定します。LXDoNeの場合は,ホスト上のpylxdからLXDサービスを操作するため,必ずしも設定する必要はなく,省略しても構いません。必要に応じて適宜読み替えてください。
$ sudo lxd init --auto \
--storage-backend dir \
--network-address 0.0.0.0 \
--network-port 8443 \
--trust-password password

LXDoNeではOpenNebulaの管理するネットワークリソースをLXDコンテナに割り当てます。eth0デバイスもデプロイ時にコンテナごとに設定するので,defaultプロファイルのeth0デバイス設定は削除しておきます。

$ lxc profile device remove default eth0

これでホスト側の準備が整いました。

LXD用ホストのOpenNebulaへの登録

ここから再びフロントエンド上での作業に戻ります。

OpenNebulaではホスト単位でハイパーバイザを指定します。一つのホストに複数のハイパーバイザを指定することはできません。LXDoNeを利用する場合は,LXD専用のホストを新規に登録するか,登録済みのKVM用ホストのドライバスクリプトをLXD用に変更する必要があります。

新しくLXD用ホストを登録する

LXD用にホストを新規に登録する場合は,onehost createコマンドの-i、-vオプションに「lxd」を指定します。以下はLXD用ホストとしてhost002を登録する例です。

$ onehost create host002 -i lxd -v lxd

上記により,host002がOpenNebula環境に組み込まれ,LXDoNe Add-onを含む全ドライバスクリプトがフロントエンドからscpで配布されます。

既存のKVM用ホストをLXD用に登録する

既にKVM用のホストとして登録してあるハイパーバイザをLXD用に変更することも可能です。ここでは前回のRecipeで登録したhost001をLXD用に変更してみます。

まず,onehost disableコマンドでhost001を使用不可の状態(disable)に移行させます。

$ onehost disable host001

$ onehost list
  ID NAME            CLUSTER   RVM      ALLOCATED_CPU      ALLOCATED_MEM STAT  
   0 host001         default     0       0 / 200 (0%)     0K / 7.7G (0%) dsbl

onehost syncコマンドを--forceオプション付きで実行し,フロントエンド上のLXDoNe Add-onを含む全ドライバスクリプトを再配布します。

$ onehost sync host001 --force
* Adding host001 to upgrade
[========================================] 1/1 host001
All hosts updated successfully.

host001のハイパーバイザ,インフォメーションドライバ,仮想マシンドライバをlxdに変更します。onehost updateコマンドにhost001を指定して実行するとエディタが立ち上がります。

$ onehost update host001

以下の3属性をlxdに変更し,保存してエディタを終了します。

(変更前)
HYPERVISOR="kvm"
IM_MAD="kvm"
VM_MAD="kvm"
(変更後)
HYPERVISOR="lxd"
IM_MAD="lxd"
VM_MAD="lxd"

onehost enableコマンドでhost001を使用可能状態に戻します。onehost listコマンドでSTAT欄が「on」になればホストは使用可能な状態となっています。

$ onehost enable host001

著者プロフィール

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

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

コメント

コメントの記入