OSvのご紹介 2014年12月版
ご注意:OSvは絶賛開発中のプロダクトであるため、将来のバージョンではここに書いてある通り動かない場合があります。
OSvとは
OSvは、ハイパーバイザやIaaSプラットフォームへアプリケーションをデプロイすることに特化した軽量OSです。
Linuxで動作するいくつかのアプリケーションが動きますが、Linuxを使わずにフルスクラッチで実装されています。
提供される機能
対応アプリ
実行環境
- Linux KVM
- Xen
- VMware
- VirtualBox
- Amazon EC2
- Google Compute Engine
OSvの使い方
ここではLinux KVMを対象とし、Linux環境で実行する例を示します。
それ以外の環境についてはWikiを参照して下さい。
Capstanのインストール
curl https://raw.githubusercontent.com/cloudius-systems/capstan/master/scripts/download | bash
prebuiltイメージの実行
capstan run -n 'bridge' cloudius/osv # Lua Shellのみのイメージを実行 capstan run -n 'bridge' cloudius/osv-tomcat # Tomcatのみのイメージを実行 capstan run -n 'bridge' cloudius/osv-cassandra # Cassandraのみのイメージを実行 capstan run -n 'bridge' cloudius/osv-memcached-opt # memcachedのみのイメージを実行 capstan run -n 'bridge' cloudius/osv-redis-memonly # Redisのみのイメージを実行
libvirtによってvirbr0がNAT用に準備されていないとコマンドの実行が失敗します。
この場合はネットワークに繋がったブリッジデバイスを準備して-b br0などとして指定して下さい。
Web UIへのアクセス
OSvインスタンス起動時に、
OSv v0.16 eth0: 192.168.122.163
のように割り当てIPアドレスが表示されます。
WebサーバはこのIPアドレスのポート8000に起動しているので、ブラウザでここへアクセスします。
正常にアクセス出来るとこのようなWebページが表示されます。
REST APIへのアクセス
RESTサーバはWeb UIのサーバと共用になっており、同じIP・ポート番号を使用します。
REST APIのドキュメントは http://
このWebページはJavaScriptによりREST APIを実際に実行してみることも可能になっています。
curlを用いてシェル上で試す場合、以下のようになります:
# js.jarをアップロードする curl -X POST http://192.168.122.89:8000/file/js.jar -Fname=@js.jar # 次回起動時のcmdlineを変更 curl -X POST -d cmdline="java.so -jar js.jar" http://192.168.122.89:8000/os/cmdline # OSvインスタンスを再起動 curl -X POST http://192.168.122.89:8000/os/reboot
Baytrail-M NUC(DN2820FYKH)でFreeBSDが起動しなかった話・その後
http://www.slideshare.net/syuu1228/intel-nuc
の続きの話です。
CURRENTにマージされたbug fixはMFCって言って、stableへマージされて次のRELEASEに含まれる仕組みになってるっぽいんですが、このパッチも無事取り込まれたようで、次のRELEASE(10.1, 9.3かな?)に入るようです。
[base] Revision 267809
[base] Revision 267821
これでFreeBSD起動しねぇ!って騒がなくてすむね!
Macでもmruby-simplehttpserverをcapstanを使ってお手軽簡単にOSv向けにビルド&実行
前回の記事ではLinuxに絞ってcapstanを使ったmruby on OSvのビルド&実行方法を紹介しましたが、アプリケーションのコンパイルが他プラットフォームでは出来ないと説明しました。
代わりに、github上にビルド済みのアプリケーションバイナリを置いて、OS Xでcapstanを使ってOSvのイメージを作成&実行することに成功したので、これを紹介します。
環境変数を設定
echo 'export GOPATH=$HOME/go' >> $HOME/.profile echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.profile source $HOME/.profile
capstanをインストール
go get github.com/cloudius-systems/capstan
mruby-simplehttpserver用のcapstanリポジトリをチェックアウト
git clone -b prebuilt https://github.com/syuu1228/capstan-mruby-simplehttpserver.git
リポジトリのビルド
QEMUのウインドウが一時的に表示されることがあるようですが、特に触らなくて問題ありません。
cd capstan-mruby-simplehttpserver
capstan build
VMの実行(VM上のポート番号80をホスト上のポート番号10080へ転送)
ハイパーバイザを指定しない場合VirtualBoxが用いられますが、正常に動作するようです。
capstan run -f 10080:80
http serverへのアクセステスト
curl http://127.0.0.1:10080/html -v * About to connect() to 127.0.0.1 port 10080 (#0) * Trying 127.0.0.1... * Adding handle: conn: 0xd0d8f0 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0xd0d8f0) send_pipe: 1, recv_pipe: 0 * Connected to 127.0.0.1 (127.0.0.1) port 10080 (#0) > GET /html HTTP/1.1 > User-Agent: curl/7.32.0 > Host: 127.0.0.1:10080 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: my-mruby-simplehttpserver < Date: Mon, 19 May 2014 17:57:13 GMT < Content-Type: text/html; charset=utf-8 < Content-Length: 28 < <H1>Hello mruby World.</H1> * Closing connection 0
matsumotory氏のmruby-simplehttpserverをcapstanを使ってお手軽簡単にOSv向けにビルド&実行する
OSvは最近capstanというビルド・デプロイツールが出来たので、以前のようにOSをビルドしなくてもアプリだけビルドしてVMイメージ作成&実行が簡単にできます。
ここでは、@matsumotory氏がブログで解説されていたmruby-simplehttpserver用のcapstanリポジトリを作成してみたので、インストール&実行方法を紹介します。
バイナリディストリビューションのインストール&実行はWindows・Mac・Linuxに対応していますが、今のところソースコードからアプリをビルドするにはLinuxが必要(公式対応ディストリはFedora 20)なので、以下の手順はFedora 20を使って説明します。
なお、この記事ではcapstan用リポジトリの作り方について詳しい解説をしていませんが、こちらにビルド設定定義ファイル「Capstanfile」のドキュメントがあるので、興味があれば読んでみて下さい。
GoとQEMUとgitをインストール
wget http://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.2.1.linux-amd64.tar.gz sudo yum install qemu-system-x86 git
.bashrcに環境変数を追加
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
capstanをインストール
go get github.com/cloudius-systems/capstan
mruby-simplehttpserver用のcapstanリポジトリをチェックアウト
git clone https://github.com/syuu1228/capstan-mruby-simplehttpserver.git
リポジトリのビルド
cd capstan-mruby-simplehttpserver
capstan build
http serverへのアクセステスト
curl http://127.0.0.1:10080/html -v * About to connect() to 127.0.0.1 port 10080 (#0) * Trying 127.0.0.1... * Adding handle: conn: 0xd0d8f0 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0xd0d8f0) send_pipe: 1, recv_pipe: 0 * Connected to 127.0.0.1 (127.0.0.1) port 10080 (#0) > GET /html HTTP/1.1 > User-Agent: curl/7.32.0 > Host: 127.0.0.1:10080 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: my-mruby-simplehttpserver < Date: Mon, 19 May 2014 17:57:13 GMT < Content-Type: text/html; charset=utf-8 < Content-Length: 28 < <H1>Hello mruby World.</H1> * Closing connection 0
Linux上のmikutterでリンクをクリックしたら別のLinux上のブラウザで表示する方法
Linux上のmikutterでリンクをクリックしたらMac上のブラウザで表示する方法 - かーねる・う゛いえむにっきの続きですが、「いや、おれMacとか使ってねぇし?不自由なOSユーザー氏ね!」みたいな声が聞こえてくる気がする*1ので、Linuxでも出来るかどうか考えてみました。
で、なんか10秒くらい考えた結果、出来そうなのでここに書いておきます。
基本的な設定は前回の記事と全く同じなのでそちらを参照して下さい。
シェルスクリプトだけ違うものを使います。
cat > open <<EOS #!/bin/sh ssh teokure.local env DISPLAY=:0.0 xdg-open $* EOS chmod +rx open
あんまりしっかり試してないけど多分これで大丈夫
*1:完全な被害妄想
Linux上のmikutterでリンクをクリックしたらMac上のブラウザで表示する方法
VM上のLinuxでmikutterを動かしてたり、synergyで2台のPCを並べて使ってたりする場合に、TwitterだけLinuxのmikutterで眺めてWebはMacで見たい場合ってありませんか。僕はあります。
そんな時、SSHを使えば割と簡単に実現出来ます。
Linuxにmulticast DNSを設定
FedoraやUbuntuのようなお手軽ディストリなら設定済みです。
GentooやArchやDebianの人はこのへんを見て設定して下さい。
ここでmulticast DNSを敢えて使用するのは、DHCPでMacのIPアドレスが変更されたり、VMのネットワーク設定が変わってホスト側のMacのIPアドレスが変わって見えたりしたときにもIPアドレスを自動的に解決する方法として適しているからです。
必要なければIP直打ちでも以下の設定をおこなう事が出来ます。
SSH公開鍵認証を設定
Linux側でパスフレーズの無いSSH鍵を作成し、Mac側の~/.ssh/authorized_keysに追加しておいてパスワード・パスフレーズ無しでMacへログインできるようにしておきます。
Macのホスト名は各自チェックして下さい。
ssh-keygen -t dsa
scp ~/.ssh/id_dsa.pub syuu-no-MacBook-Pro.local:~/
- Mac側
mkdir .ssh cat id_dsa.pub >> .ssh/authorized_keys
シェルスクリプトを作る
cat > open <<EOS #!/bin/sh ssh syuu-no-MacBook-Pro.local open $* EOS chmod +rx open
試しに叩いてブラウザが上がってくるかみてみます
~/open http://www.google.com
mikutterに設定する
設定→表示→URLを開く方法で次のコマンドを使うを選び、
/home/syuu/open
などと書き込んでおけば、次からブラウザではなくて上述のシェルスクリプトが実行されて何故かMacでブラウザが立ち上がるようになります(ホームディレクトリのパスは各自チェックして下さい)。
githubで公開することにしました
既にこのブログで第1回、第2回を公開していますが(追記:githubでの公開にあわせて削除済み)、原稿元データを含めて全ての回をgithubで公開することにしました。
現在、TeXへの変換作業のボランティアを募集しています。
詳しくはgithubリポジトリのREADME.mdを参照して下さい。