be disposable.

Chef-Solo, Chef-Client LocalMode, Knife-Solo, Knife-Zero and us.

Added on by Sawanobori Yukihiko.

Chef-Soloが無くなるので、他の何かに乗り換える必要があるのか。 という話に対してKnife-Zeroをダシに何か言っておこう。

最初に言っておくと、今Chef-Solo、Knife-Soloを使っている人、多分何もしなくていい。

登場人物一覧

  • Chef-Solo
    • Chef-Server無しでローカルサーバにChefのレシピを適用する。Chef-Server非互換(11でほぼ改善)。
  • Chef-Client LocalMode
    • Chef-Server無しでローカルサーバにChefのレシピを適用する。Chef-Server互換。
  • Knife-Solo
    • レシピ一式を転送し、Chef-Soloをリモートサーバに適用する。
  • Knife-Zero
    • レシピ一式を転送せず、SSH越しにChef-Client LocalModeを実行する。

全てのChef-Solo関連がにChef-Zero(Chef-Client LocalMode)に変更されるというのは飛躍的な判断

なんとなく騒がれているのは、これの元記事からなのかしら。

[和訳] ソロからゼロへ: Chef Clientローカルモードへの移行 #opschefja #getchefja « CREATIONLINE, INC.

基本的にこれはサーバのローカルで実行する場合についての話でしょう、まあそれならChef-Client LocalModeに変えるのはほとんど何も変更はいらないのでよくわかります。

で、リモートではやるKnife-Soloについて考えた時に、"Chef-Solo無くなる"="Knife-Solo使えなくなる"でもないわけです。 Knife-Soloは単なる非公式のプラグインであって、公式がこういう記事でいちいち言及しないでしょうね。

少なくともKnife-SoloはChef-Soloと心中なんてしないだろう

日本でKnife-Soloがそこそこ広い認知度を持っているのは、伊藤直也さんの入門Chef Solo - Infrastructure as Codeによるところが大きいでしょう。多分そう、部分的にそう。

この本で覚えたフローや使い方が今後できなくなるかって言うと多分そんなことはなくて。 Knife-Solo開発陣はChefの動向をちゃんと追っています。

add local_mode to solo.rb · Issue #353 · matschaffer/knife-solo

(関連ディレクトリをまるまる転送、リモートでLocalMode相当の実行形式に変更など)

ということでKnife-Soloでやっているものは、基本的にそのまま使い続けることもできそうだと思ってます。 実際Chef-Soloって無くなるのかも不明、もしかしたらChef14とか15になれば居なくなるのかもしれませんね。

Knife-ZeroはミニマムなChef-Server環境への移行パス

じゃあKnife-Zeroはどういう位置かというと、Chef-Server環境との相互移行がやりやすいChefの導入方法(の一つ)です。 SSH越しにリモートで実行されるChef-ClientはLocalModeではなく、通常のClientモードとしてChef-Server(SSH元のChef-Zero)に対して接続します。

なのでKnife-Solo(そもそも私は使ってない)の代わりではなく、既存のChef-Serverを畳む用途で作りました。

  • Knife-Zeroではじめて、Node数が増えてきたらChef-Serverへ
  • Node数が少ないChef-ServerをたたんでKnife-Zeroへ

Knife-Zeroは、概ねお一人様用Chef-Serverという感じです。node情報ををgit管理できたり、エディタで手元からしれっとattributeを追加できたりという利点とかありますが。 大人数で保守する場合や、継続的にChef-Clientを実行したい場合、Nodeがとても多い場合は多分Chef-Serverのほうがよいのかと思います。

Knife-Zero豆知識

  • Chef-Zeroは2,000nodeくらいまでなら性能的に問題ない。
  • Knife-Zero制作のきっかけはlightchef(現itamae(github link))
    • Severspec的発想がいいと思った。
    • しかし同時に、『インベントリも収集せずに(light)Chefとはどういう了見か』と思った。
  • Facebookの中の人も、SSH越しのLocalMode(Chef-Zero)を使っている。
  • 最初は本家へのPull Requestとして作成していた
    • とても煩雑なコードになって、説明するのが面倒に。
    • とりあえずリリースを優先、楽なKnifeのプラグインとして作成。
    • 本家にマージしたい。
    • Chef本体からあまりコードの量的に離れたくない。
  • リリース当初の私が書いたコードはほとんど残っていない。
    • @yasushia氏によってリファクタリングが行われ、とてもスッキリしたのでv1.0.0を付けた。
  • Chef12のRC版ではローカルモードが盛大にクラッシュする。

つらつらと書きましたが、Knife-Zeroは色々と楽をできるように作ったので、新規のシステムをChefで作り始めるとか、既存のシステムにChefを導入するとかならKnife-Zeroをおすすめします。