За замовчуванням 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 :-).