Pandlerというrpm/yum管理ツールを作り始めました
皆さん、構成管理楽しんでますか?最近は Chef や Puppet がやっと認められてきて普及し始めているところの様で、いろんな人が構成管理を楽しみ始めていてとてもうれしいです。
ところで、僕は前にこんなエントリを書いたりして、パッケージ管理にとっても興味のある人間なんですが、Berkshelfという Chef の cookbook を Bundler の様に DSL と lockfile で管理できるというスーパー便利ツールの開発者のプレゼンをこの間聞きました。僕はこの DSL と lockfile でパッケージを管理するというやり方はすごい好きで、Bundler に始まり他の LL のパッケージ管理も大抵そういう仕組がありますし、Berkshelf の様に言語のパッケージだけでない応用もあるわけですね。
で、だったら rpm/yum(deb/apt)も同じ様に管理できたらおもしろいんじゃないかな?と思って作り始めたのが Pandler というツールです。試行錯誤しながらやっと最低限動くものができたので rubygems に上げておきました。詳細はこちらのドキュメントで。
どういうツール?
Gemfile の様な感じで Yumfile というのを作ってあげると、それを元に./pandler/root
というディレクトリに chroot の環境を作って勝手にインストールしてくれます。pandle exec
を経由すれば chroot して実行する感じになるので、Pandler 自体が入っている OS のパッケージの状態にはほぼ無関係に好きなパッケージを突っ込んで動作させられます。
今はただそれだけなのですが、そのうち Vagrant の様にプロジェクトのホームを chroot の中に mount して見られる様にするつもりです。そうすると、rpm/yum の状況を完璧な形でどこでも再現できて、うれしい気がしてます。本当かはわかりません。
VM とかあるじゃん?なんで chroot?
21 世紀にまさかの chroot という感じですが、それなりには理由があります。オーバーヘッドが少ないのはもちろんなんですが、VM を立てて使う場合個人的にめんどくさいと思ってるのが IP アドレス含むネットワークなんですよね。chroot ならそれ考えなくていいのですごくシンプルです。代わりにポートがぶつかったりするので注意は必要ですが。
あと、VM だとその OS のインストール自体でどうしても少なからぬパッケージがインストールされてしまって、lockfile で完全固定とかがしづらいんですよね。Pandler ならそれが動いてるマシンが、物理サーバだろうが VM だろうがクラウドだろうが、同じ環境を再現できます(語弊はありますがとりあえずイメージということで)。
今後
とりあえずここまで持ってくるので相当疲弊したので、日本の方の反応を見てから考えます。。。
root でなくても動かせる様にしたいなーとかは思ってたり、deb/apt も対応したいなーとか思ってたりはしますが、何分使う機会の当分ないソフトウェアなので気力のある時に細々と頑張りたいと思います。
もし興味もって頂けて一緒に開発してもいいという方や、文句があるから色々つっこませろという方がいましたらぜひぜひご連絡下さい。
-
happy_siro 13-04-03 (水) 21:55
Chef や Puppet でもおんなじようなことはできると思うんですが、なんで、Pandler を作ったんでしょう?
-
riywo 13-04-04 (木) 14:34
完璧な管理はかなり努力しないとできないのが大きいですね。どうしても OS を入れるという行為自体に引きずられてパッケージが環境依存で変化してしまいます。カーネルモジュールであったりハードウェアの監視モジュールだったりも含めて。完璧に同じ環境を再現するにはまっさらな root filesystem を使う必要があると思っていて、それは Chef や Puppet ではだいぶしんどいかなと(できるのかもしれませんが調べてません)。Pandler でもカーネルだけはどうにもできないですが。
ただ、というのはほとんど後付の説明で、Yumfile というのがあったら面白いかなと思ったのが一番の動機ですw
Pandler で作った環境の中にパッケージで chef-solo を一式入れて、その環境の中を更にプロビジョニングをするというのもやれたら面白いと思ってます。
-
happy_siro 13-04-09 (火) 16:22
理解しましたー。ありがとうございます!。
> Yumfile というのがあったら面白いかなと思ったのが一番の動機です
これは面白いし、便利だと思います。
うちは Chef でパッケージのインストールを行う recipe だけ作って、Role でまとめてるんですけど、大仰でめんどくさいと時々感じます。。。