libvmod_mrubyなるものを作り始めた
概略
HTTPアクセラレータVarnish Cacheの設定言語VCL。そのVCLにmrubyのコードを呼び出せるようにした。
今後はRubyでVCLの設定をスクリプティングできるようにして、C言語ライクなVCLより柔軟性が高いであろうRubyのDSLで設定をいじれるようにしたい。ので、作り始めた。
詳細
例
requrement
Varnish Cache 4.0.0 or later(開発ではHEADを使っている)
root権限
git clone http://github.com/KeizoBookman/libvmod_mruby.git cd libvmod_mruby/src git clone http://github.com/mruby/mruby.git cd mruby make cd ../.. ./autogen.sh ./configure make make install
そしてdefault.vclなどのVarnishの設定ファイルに以下のように記述します。(Archでは/etc/varnish/default.vcl)
import mruby; sub vcl_deliver { set resp.http.mruby = mruby.exec(" 'hello world' "); }
と設定してVarnish Cacheを起動させ、VarnishCacheの立っているポートにアクセスすると
ヘッダにmrubyと言う名前のものが追加されておりhello worldという値が入っているはずです。
今できるのはこれだけであとはintegerかvoidのRubyスクリプトをVCLから呼び出せます。
今後
今のところ出来ることはほとんどないけど、RubyからVCLを呼び出せるようにするところまではちゃんと実装するつもりです。
masterは一応make出来る状況を維持しておくけれどもちゃんと動く保証はありません。github.com
余談
ネタ自体は一年位前に人にもらって何度か作ろうとしてたけどやっと実装を始められたのでちょっとワクワクしている。