LoginSignup
37
36

More than 5 years have passed since last update.

Chef Solo ではなく Chef Client Local Mode を使おう

Posted at

2014/06/24 に Opscode 公式ブログで From Solo to Zero: Migrating to Chef Client Local Mode という記事が公開されました。記事を要約すると「Chef Solo はオワコンだから Chef Client Local Mode を使え」ということのようです。

Chef Client Local Mode (旧 Chef Zero) って?

Chef Client Local Mode (旧 Chef Zero) は Chef Solo の全ての機能を備えており、Chef Server に移行する際にも楽です。Chef Client 11.8.0 から採用されました。実行するには chef-client--local-mode または -z オプションを付けます。

Local Mode ではローカルのファイルシステムから揮発性の Chef Server を作り、
Server-Client 構成と同じオペレーションが行われます。つまり Chef Server が無ければできなかった高度な機能を、サーバーレスで気軽に行うことができます。

Chef Server のフル機能を、Chef Solo 同様の気軽さで使えるのが、Chef Client Local Mode と言っていいでしょう。

Chef Solo から Chef Client Local mode に移行するべき理由

1. Local Mode なら Server-Client で使える全ての機能 -- environments, roles, (encrypted) data bags -- が使える。ノードやレシピの検索機能も使える。

2. 特別なツールや knife プラグインは必要無い。

3. レシピ実行環境が Solo か Server かの分岐を書く必要が無くなる。例えば以下のようなコード。

if Chef::Config[:solo]
  # do something
else
  # do something else
end

4. chef_zero を Test Kitchen の provisioner に使う際、 "fixture node objects" をテストデータとして使える。

5. 後に Chef Server 構成を使いたくなった時にすんなり移行できる。

今すぐ Chef Solo をお払い箱にする必要はありませんが、公式に deprecated 扱いされているので、今後は Solo よりも Local Mode を使うことをお薦めします。これから Chef を始める人は、chef-apply か local mode を使うといいでしょう。

Vagrant で使う時はどうする?

Vagrant 1.7.0 より、Chef Client Local mode が使えるようになりました。単純に provisioner に chef_zero を指定するだけで動作します。

Chef Zero - Provisioning - Vagrant Documentation

Vagrant.configure("2") do |config|
  config.vm.provision "chef_zero" do |chef|
    # Specify the local paths where Chef data is stored
    chef.cookbooks_path = "cookbooks"
    chef.roles_path = "roles"
    chef.nodes_path = "nodes"

    # Add a recipe
    chef.add_recipe "apache"

    # Or maybe a role
    chef.add_role "web"
  end
end

参考

37
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
36