chef-dkの便利さ
久しぶりに仕事の案件用で新しい環境を構築する為にchef環境を構築中、
各種gemをbundle installしているところで
"dep-selector-libgecode"のインストールにハマる。
Windows(RubyInstaller) + berkshelf 3.0 をインストール(dep-selector-libgecode問題) - Qiita
恐らく原因はこれと同じ。
こんなことに時間を使うのも勿体無いし、最新版は使いたいしということで回避策を検討していたところで
以下を見つけた。今更感ある。
Download Chef Development Kit | Chef
実行用のRubyをはじめ、必要なgem等々を全てパッケージ化している為
環境を汚さず簡単に始められる。
Redhat系ならインストールは以下のようにrpmでインストール。
sudo rpm -ivh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.2.0-2.el6.x86_64.rpm
Macならパッケージを落として来てGUIのインストーラでOK。
ChefDK contains:
An early version of a brand new command-line tool, chef, that aims to streamline Chef workflow, starting with new generators.
The well-known cookbook dependency manager Berkshelf 3.0.
The Test Kitchen integration testing framework.
ChefSpec, which makes unit testing cookbooks a breeze.
Foodcritic, a linting tool for doing static code analysis on cookbooks.
All of the Chef tools you're already familiar with: Chef Client, Knife, Ohai and Chef Zero.
一通りパッケージは入っているようだけど、よく見たらknife-soloがない!!
はい、ということでインストールするのですが、
インストール方法は以下。
chef gem install knife-solo
簡単。
chef-dkはインストールするとchefコマンドが追加される。
(/opt/chefdk/bin/chefが実体でインストール時に勝手にPATHに追加される)
で、chefコマンドにはbundleとかgitの様な便利なサブコマンドが用意されている。
$ chef -h
Usage:
chef -h/--help
chef -v/--version
chef command [arguments...] [options...]
Available Commands:
exec Runs the command in context of the embedded ruby
gem Runs the `gem` command in context of the embedded ruby
generate Generate a new app, cookbook, or component
shell-init Initialize your shell to use ChefDK as your primary ruby
verify Test the embedded ChefDK applications
この中のchef gemコマンドを使用したのが上記のknife-soloのインストールということ。
追加で入れたgemもchefコマンドで入れればパッケージ内で管理されるので、要らなくなったらrpm -eでパッケージ毎アンインストールすれば環境も綺麗なままです。
注意点としては、既にグローバルにchef等をインストールしてある環境にchef-dkを入れると上手くいかないとのこと。
今後chefを使うならこれがスタンダードで良いのでは?と思います。(小並感)