Sunzi: Server provisioning utility for minimalists
"The supreme art of war is to subdue the enemy without fighting." - Sunzi
いわゆるchefのようなサーバープロビジョニングツール。
特徴
- レシピはshell script
- 冪等性?犬にくれてやれ!
- root前提
- デフォルト設定との差分だけを設定する
- サーバー側に入れなきゃいけないソフトは無し(shell scriptだから)
ミニマリスト向けツールに見えますが意外と高機能で、基本的にknife-soloのようにクライアントからサーバーに対して使うの前提だし、berkshelfのようにリモートのrecipeを取り込む機能があるし、erbのテンプレートやweb, dbみたいなrole機能もあります。
そもそも俺はdebian(今だったらwheezy)しか使わないし、冪等性とか要らないし、VPSをサクッと設定したいだけなのでちょうどハマりました。
recipes/ruby.sh:
apt-get install -y ruby1.9.3
例えばrubyのrecipeはこんな感じ(少しだけ賢いsunzi.installの方がおすすめですが)。shell scriptなので他人のrecipeがいきなり読めるのがおっさんエンジニアには嬉しい。ちょっとした設定書き換えをsedでやってるの見るとホッとします。
これだったらちょこっと設定してcapistranoでrailsアプリデプロイするとこまで道筋がすごく見えやすいです。
vagrantでsandbox rollbackしながらrecipeを書いてくのが快適です。
疑問
仕事に使おうとしてるんですがいくつか疑問点が。
- 鍵認証のrootユーザー、sshはデフォルトの22番で運用するのが普通?
- capistranoでdeploy(=appサーバーの実行者)もrootユーザーでやるの?
- ソフトのバージョンアップとかはどういう感じでやるの?