По умолчанию 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]
использовать файлы JSON на основе имени хоста, домена или fqdn. Но как только вы начнете создавать леса серверов для поддержки такого рода динамической конфигурации, вы можете посмотреть на запуск Chef Server :-).