デフォルトでは、chef-solo
から設定を読み取ります/etc/chef/solo.rb
。コマンドラインパラメータは、このファイルで設定できる構成値に対応しています。これは、mixlib-configライブラリを使用して行われます。
option :config_file,
:short => "-c CONFIG",
:long => "--config CONFIG",
:default => "/etc/chef/solo.rb",
:description => "The configuration file to use"
option :json_attribs,
:short => "-j JSON_ATTRIBS",
:long => "--json-attributes JSON_ATTRIBS",
:description => "Load attributes from a JSON file or URL",
:proc => nil
option :recipe_url,
:short => "-r RECIPE_URL",
:long => "--recipe-url RECIPE_URL",
:description => "Pull down a remote gzipped tarball of recipes and untar it to the cookbook ca
che.",
:proc => nil
「オプション」は設定ファイルの値です。
実際の構成ファイル/etc/chef/solo.rb
は次のようになります。
file_cache_path "/tmp/chef-solo"
cookbook_path "/tmp/chef-solo/cookbooks"
role_path "/tmp/chef-solo/roles"
json_attribs "/tmp/chef-solo/node.json"
recipe_url "http://www.example.com/chef-solo.tar.gz"
また、JSONファイルはリモートURLにすることもできます。
json_attribs "http://www.example.com/node.json"
Ohaiを設定ファイル内のライブラリとして使用して、プラットフォームやその他の属性を検出し、使用するJSONファイルを指定することもできます。
require 'rubygems'
require 'ohai'
o = Ohai::System.new
o.all_plugins
file_cache_path "/tmp/chef-solo"
cookbook_path "/tmp/chef-solo/cookbooks"
role_path "/tmp/chef-solo/roles"
json_attribs "/tmp/chef-solo/#{o[:platform]}.json"
recipe_url "http://www.example.com/chef-solo.tar.gz"
そして、たとえば、「プラットフォーム」固有のJSONファイルがあります。またはo[:hostname]
、を使用しo[:domain]
たりo[:fqdn]
、ホスト名、ドメイン、またはfqdnに基づくJSONファイルを使用したりできます。しかし、この種の動的構成をサポートするサーバーの足場を手に入れたら、Chefサーバーの実行を見てみるとよいでしょう:-)。