リモートCLIについて

OSvには簡易シェルとしてLua CLIが用意されていて、capstan経由でLua CLIしか入ってないVMイメージが配布されていたりするのですが、実はこのCLIは全てREST API上に実装されています。

つまり、常にhttp://127.0.0.1:8000/へRESTを送ってシステムのAPIを叩いており、そのままこのCLI実装をOSvの外側に持って行けばリモートCLIとして使う事が出来ます。

そもそもそういう意図で実装されていたのですが、最近までOSvの外側で動かすためのテストと配布イメージ作成が行われていませんでした。

最近になってLinux環境にインストール可能な配布イメージを作成出来るようになったので、ビルド方法・インストール方法・使い方をご紹介します。

リモートCLIのビルド方法

ビルド済みイメージを後述のURLから配布しますので、通常この作業は必要ありません。
ディストリビューションでパッケージを作る用途などにお使い下さい。

なお、このビルド方法は今の所Fedora20でのみ動作が確認されています。

git clone https://github.com/cloudius-systems/osv.git
cd osv
git submodule update --init --recursive
sudo scripts/setup.py
cd modules/cli
make rpm

以上のコマンドでrpmbuild/RPMS/x86_64/osv-cli-1.0-1.fc20.x86_64.rpmRPM形式で、rpmbuild/SOURCES/osv-cli-1.0.tar.gzにtar.gz形式で配布イメージが出力されます。

ビルド済みイメージのダウンロード

osv-cli-1.0-1.fc20.x86_64.rpm
osv-cli-1.0.tar.gz

配布イメージのインストー

RPMの場合
yum install osv-cli-1.0-1.fc20.x86_64.rpm
tar.gzの場合
tar xpf osv-cli-1.0.tar.gz
mv osv-cli-1.0/usr/lib64/osv-cli /usr/lib64
echo "(cd /usr/lib64/osv-cli && exec ./cli \$@)" > /usr/bin/cli
chmod a+rx /usr/bin/cli

使い方

シェル1(OSvを起動)
$ capstan run -n 'bridge' cloudius/osv-tomcat
Created instance: cloudius-osv-tomcat
OSv v0.16
eth0: 192.168.122.72

IPアドレスをメモ。

シェル2(リモートCLIを起動)
$ cli -a http://192.168.122.72:8000
/# ls
dev/             etc/             init/            java/
java.so          libhttpserver.so libtools.so      libuutil.so
libzfs.so        proc/            tmp/             tools/
usr/             zfs.so           zpool.so
/# cat etc/hosts
127.0.0.1 localhost osv.local

/# api os version
v0.16
/#

次回予告

今回はRESTサーバに対するセキュリティ設定(鍵認証設定)、CLIの使い方に言及しなかったので、次回はこのあたりを解説していきます。

追伸

Luaで実装されたRESTベースのシェルってやつのソースコードが読んでみたいという方、このへんです。