しばらくchefを触ってないうちにまたchefの環境が変わってた。
というわけでchef-DKを使ってみた。
chef-DKとは
Chef Development Kit、chefの関連gemとか全部のせパッケージのこと。Berkshelfも今はchef-DKに入るようになっていて、推奨インストールはchef-DKでのインストールですよーとある。今までのgem install berkshelf
が使えなくなったわけではないが、さまざまな依存関係を考慮しなくて良くなるのでこっちの方が楽だと思う。
macでのインストール方法は公式サイトからdmgファイルを落としてきたらいいだけ。
インストールされたかどうかの確認は以下。
$ chef --version Chef Development Kit Version: 0.3.5
アンインストール方法はドキュメントが死ぬと困る原則に従ってコピペすると以下のようになる。
$ sudo rm -rf /opt/chefdk $ sudo pkgutil --forget com.getchef.pkg.chefdk $ find /usr/bin -lname '/opt/chefdk/*' -delete
使い方
Chef Development Kit 0.3.2を使ってみよう:基本編 #opschef_ja #getchef_ja - クリエーションライン株式会社
これはubuntuでchef-DKを使う方法を記載した記事だが、よくまとまっているのでまずここを読むといいと思う。
で、ここでBerkshelfもインストールされてるからberks
コマンドを打てばいいかなと思ったら、
$ berks rbenv: berks: command not found The `berks' command exists in these Ruby versions: 2.0.0-p451
システムのrubyではなく、あくまでもchef-DKで展開したパッケージのgemの一つに登録されているからで、次のコマンドでシステムとchef-DKで入るrubyを比較してみる。
$ ruby -v ruby 2.0.0p598 (2014-11-13 revision 48408) [x86_64-darwin13.4.0] $ chef exec 'ruby -v' ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-darwin12.0]
なのでrbenvと直接的な競合は起こさずに利用できる。
Berkshelfを使うには
$ chef exec 'berks -v' 3.2.1
こんな感じ。
もしシステムのrubyをchef-DKのrubyに置き換えてしまって問題ないというなら
$ echo 'eval "$(chef shell-init zsh)"' >> ~/.zshrenv
としてやれば良い。さっきのようにchef exec
コマンドを用いなくてもberks
コマンドが一発で叩けるようになる。
knife-soloとかどうやってインストールするの?
実はchef-DKにはデフォルトではknife-soloが入っておらず、もし使うなら別途インストールの必要がある。しかしgem install knife-solo
と叩いてしまうとシステムのrubyのgemとしてknife-soloがインストールされてしまって意味がないので、
$ chef gem install knife-solo
と叩いてやる必要がある。だが、
簡単!MacOSXやLinuxにChef,Knife,Berkshelfを一発でインストールしてくれるChefDKの紹介 · DQNEO起業日記
の記事に書いてあるようにknife-soloをインストールしなくても、chefのレシピを使用したいサーバで直接chef-DKを展開してやればいい。knife solo prepare
コマンドというのはレシピを流し込みたい先のサーバにchef(正確にはchef-solo)をインストールしてレシピが適応できる準備を整えるコマンドになる。レシピを流したいサーバに全くログインしないような使い方ってあんまない*1と思うので、chef-DKに初めから入ってるものを上手に使えるようになることを考えたい。
あとそもそもchef社が書いてるブログ記事に
Although we have no immediate plans to deprecate Chef Solo, we will eventually remove it from Chef.
すぐにChef Soloをなくす予定はないけども、いつかはChefから消す。
とはっきり言っちゃってるので、knife-soloが使えなくなることは念頭に置いといたほうがいい。
じゃあknife-soloの代わりは?というとChef Zeroを使う、knife-zeroというものがあるらしい。
参考リンク
- Chef Development Kit | Chef Downloads | Chef
- Chef Development Kit 0.3.2を使ってみよう:基本編 #opschef_ja #getchef_ja - クリエーションライン株式会社
- 簡単!MacOSXやLinuxにChef,Knife,Berkshelfを一発でインストールしてくれるChefDKの紹介 · DQNEO起業日記
- Knife-SoloからKnife-Zeroへの移行 #getchef - クリエーションライン株式会社
- Chef-SoloからChef-Clientローカルモードへの移行 #opschef_ja #getchef_ja - クリエーションライン株式会社
- [和訳] ソロからゼロへ: Chef Clientローカルモードへの移行 #opschef_ja #getchef_ja - クリエーションライン株式会社
*1:あるかもしれないけど、少なくとも私がちょっと遊ぶ分には入らないことが考えられない