OSv CLIの使い方

リモートCLIについて - かーねる・う゛いえむにっきでも紹介したCLIの使い方についてです。

リモートCLIに必要なもの

まず、Linuxホスト側でCLIをインストールする必要があります(参照)。
その上で、httpserver(REST APIサーバ)を含むOSvのイメージを実行する必要があります。

Capstan経由で配布されているディスクイメージやosv.ioで配布されているディスクイメージは全てhttpserverを含んだイメージですが、OSvをソースコードからビルドする場合はhttpserverを明示的に指定する必要があります。

つまり、

git clone https://github.com/cloudius-systems/osv.git
cd osv
git submodule update --init --recursive
make image=ruby-publify

ではなく、

git clone https://github.com/cloudius-systems/osv.git
cd osv
git submodule update --init --recursive
make image=ruby-publify,httpserver

のようにビルドする必要があります。

CLI on OSvに必要なもの

CLIとアプリケーションとで1つのコンソールを共有するので、アプリケーションと同時にCLIを実行出来るのはアプリケーションが継続的なコンソール出力を行わない・コンソール入力を要求していない場合に限ります(OSvに切り替え可能な仮想コンソールはありません)。

コンソールの使用が競合してもCLIとアプリケーションは正常に動作しますが、出力や入力が入り交じって使えないものになってしまいます。

例えばTomcatCLIを実行する場合は、

git clone https://github.com/cloudius-systems/osv.git
cd osv
git submodule update --init --recursive
make image=tomcat,cli

のようにビルドするとTomcatCLIが同時に起動されるイメージを作る事が出来ます。

Capstanで配布されているイメージとしてcloudius/osvというCLIのみを含んだものがありますが、このイメージではJavaや他の言語ランタイムを一切含んでいないため、簡単にユーザプログラムを追加・実行するのが難しくあまり役に立ちません(※ネイティブバイナリを試すことは簡単にできます)。

CLIの使い方

help

help でコマンド一覧を表示します。
help <コマンド名>でコマンド毎の使い方を表示します。

exit

OSを停止します。poweroffと同じ動作になります。

Unix風コマンド群

cat, cd, date, df, dmesg, echo, free, ls, mkdir, poweroff, reboot, rm, top, uptimeについては同名のUnixコマンド風の動作を行います(引数などがPOSIX準拠になっているわけではありません)。

api

他のコマンド群はREST APIをラップして通常のUnixコマンドなどのように振る舞うのに対し、apiコマンドはユーザが直接REST APIを操作するためのものです。
使い勝手は他のコマンド群に劣りますが、現状ではapiコマンドを経由してしかアクセス出来ない機能が多数存在するため、このコマンドを使う事がほとんど必須になります。

api でos, jvm, networkなどのAPIクラス名の一覧が表示されます。

api <クラス名> でAPIクラスが持つメソッドが表示されます。この時、HTTPメソッド種別が特に書いていない説明の行はGETメソッドで、[POST]と書かれている行はPOSTメソッドになります。

GET以外のHTTPメソッドを実行するには、api -m のように引数を渡す必要があります。

例えばos.rebootを実行する場合は以下のようになります:

# api -m POST os reboot

POSTにパラメータが必要な場合は以下のように「変数名=値」の形式で指定します。

/# api os hostname
osv.local
/# api -m POST os hostname name=osv1

/# api os hostname
osv1

POSTに必要な変数名などの細かい情報はCLIのヘルプには表示されないので、WebブラウザでRESTサーバへ接続してREST APIのドキュメントを読んで下さい。
REST APIのドキュメントは http://:8000/ へアクセスして、左側のRESTのタブを選ぶ事で読むことが出来ます。

常に最新版がアップロードされているとは限りませんが、REST APIのドキュメントはこちらにミラーされています:OSv API