OpenStack IronicでVirtualBoxを操作する

Ironicは物理マシンと接続して、電源管理等を行うために様々な機器に対応したドライバーが提供されています。その中で、検証等に使えるVirtual Box用のドライバーも提供されています。Vitual boxが操作出来るドライバーはSSHを使ってコマンドを発行するSSHドライバーとVirtual BoxのSOAP APIに接続する2種類提供されています。

SSHドライバーについて

SSHドライバーはVirtual Boxを含む仮想化環境に対応しています。virtual box / virsh / vmware / parallels / xenserverと多種多様な仮想化環境に対応しています。SSHドライバーは仮想化基盤にSSHで入ってコマンドを発行して操作するためにSSHのホスト側の機能が必要です。例えばVirtual BoxであればVBoxManageコマンド、VMware(ESXi)であればvim-cmdコマンド、virshであればvirshコマンドで操作を行います。

https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/ssh.py

Virtual Boxドライバー

SSHのサーバーを立てれない場合の為に、Virtual Boxが提供しているWeb Serviceを使うドライバーも提供されています。これはKiloで提供されました。これを使えばMACやWindowsでVirtual Boxを動作させて手軽にIronicの試験が出来るようになります。今回はRDOのLiberty版を利用して、両方のドライバーの使い方を解説します。

http://docs.openstack.org/developer/ironic/drivers/vbox.html

SSHドライバーでVirtual Boxを操作

Virtual Boxを動作させるホストでの準備

SSHドライバーはVBoxManageコマンドでホストを操作します。 /usr/bin/VBoxManageでコマンドを発行しますが、Macの場合は /usr/local/bin/VBoxManageとなっています。コード自体を修正しても良いですが、Mac側でシンボリックリンクを作成しておく方が今後IronicをUpdateした時にも対応出来ます。Mac上で以下のコマンドを発行してシンボリックリンクを作成します。

sudo ln -s /usr/local/bin/VBoxManage /usr/bin/VBoxManage

更にIronicでデプロイ対象の仮想マシンを作成しておきます。ネットワークはOpenStackのProvision NWと同一のNWを選択します。ホストオンリーアダプター、内部ネットワークになります。注意頂きたいのはホストオンリーアダプターでは標準でDHCPが動作しているためMACであればVirtual  Boxの環境設定から当該NWのDHCPを切っておきます。さらに古いVirtual BoxではGUIで設定しても反映されない場合があるのでVirtual Boxも最新にしておく事を推奨します。作成後、設定>システムの画面の起動順序でネットワークを選択しておき、PXE Boot出来るようにしておきます。一度起動してみるとポップアップメッセージが出ますが、キャンセルを選んでおきます。

OpenStack側の準備

OpenStack環境でIronicを構成します。RDOを利用する場合はAnswer Fileの中でIronicを有効にしてインストールを開始するとIronicがインストールされます。後は通常のFlat NW作成したり、PXE用のTFTPサーバー準備したり、イメージ準備したりとIronicの通常の手順を実施しておきます。

http://docs.openstack.org/developer/ironic/deploy/install-guide.html#neutronflatnetworking

ironic.confでVirtual Boxのドライバーを有効化しておきます。pxe_ssh / agent_sshから選択出来ます。設定後はironic conductorを再起動します。

enabled_drivers=pxe_ssh

ironicのコマンドでノードを追加します。今回はUser NameとPasswordで認証していますが、証明書認証も使えます。追加前にOpenStackから対象にSSHでログイン出来る事を確認しておきます。Macであれば設定>共有からリモートログインを有効化しておきます。

ironic node-create -n vbox -d pxe_ssh -i ssh_address=192.168.33.1 -i ssh_username=user -i ssh_virt_type=vbox -i ssh_password=password

ノードに対してMACアドレスを設定します。SSHドライバーはMACアドレスから対象の仮想マシンを検索します。コマンドで-nの後にノードID、-aにMACアドレスを設定します。

 ironic port-create -n f8d66235-6144-437f-a4ea-3b5f01fdd3cf -a 01:00:22:FF:33:AA

これで以下のコマンドで仮想マシンをPower On出来れば上手く設定出来ています。この後は通常のIronicのPXEブートの設定を行います。

ironic node-set-power-state vbox on

Virtual BoxドライバーでVirtual Boxを操作

Virtual Boxを動作させるホストでの準備

IronicのVirtual Box DriverはVirtual Boxに対してSOAPのAPIで接続を行います。このため事前にVirtual BoxのWebサービスを起動しておきます。どのように起動するかは以下のURLに詳しく書いて有ります。

https://www.virtualbox.org/manual/ch09.html#vboxwebsrv-daemon

サービスの認証の設定を以下で無効にすることも出来ます。

VBoxManage setproperty websrvauthlibrary null

サービスとして起動させても良いですが、一時的に起動する事も出来ます。例えばMAC以下の様に手動で起動する事も出来ます。

/Applications/VirtualBox.app/Contents/MacOS/vboxwebsrv  --port 9966 --host 192.168.33.1

Curlコマンドやブラウザで当該のポートにアクセスすると正しく動作しているか確認出来ます。ポートが被って起動出来ない等がありますので、起動しているかの確認は必要です。curlで確認するとErrorですが、一応以下の様なReplyが帰って来ます。SSHドライバーを利用するのと同様に仮想マシンを作成しておきます。

OpenStack側の準備

Ironicをインストールして、設定を行います。インストール後にまずはVirtual Box driverはpyremotevboxを利用するためpipでインストールします。

sudo pip install "pyremotevbox>=0.5.0"

pipがインストールされていない場合はCent OS 7であれば以下のコマンドでインストール出来ます。

sudo yum install -y python-pip

ironic.confでVirtual Boxのドライバーを有効化しておきます。pxe_vbox / agent_vbox / fake_vboxから選択出来ます。設定後はironic conductorを再起動します。

enabled_drivers=pxe_vbox

 

ironicのコマンドでノードを追加します。10.0.2.2はVirtual Boxが動作しているホストのIPです。virtualbox_vmnameは仮想マシン名になります。設定を行う前にまずは先程も確認した、SOAPのAPIにOpenStackからcurlコマンド等で接続出来るか確認しておきましょう。この例だと curl 10.0.2.2:9966 と打てば返事が帰ってくるはずです。

ironic node-create -n vbox -d pxe_vbox -i virtualbox_host='192.168.33.1' -i virtualbox_port='9966' -i virtualbox_vmname='baremetal'

上手く動いていれば以下のコマンドで動作の確認は以下のコマンドから可能になります。

ironic node-set-power-state vbox on

これで、Virtual Boxの仮想マシンがIronicからコントルール出来るようになりましたのでこの後は通常のIronicとNovaの設定やコマンドの実行でプロビジョニング出来ます。

まとめ

ベアメタルプロビジョニングは物理マシンを利用するため、確認するにも仮想と違いとても時間がかかります。物理に関連しない部分の動作確認は今回のように仮想化環境を使ってやっていくのが賢い方法だと考えます。

広告
OpenStack IronicでVirtualBoxを操作する

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中