Per impostazione predefinita, chef-solo
legge la sua configurazione da /etc/chef/solo.rb
. I parametri della riga di comando corrispondono ai valori di configurazione che possono essere impostati in questo file. Questo viene fatto usando la libreria 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
L '"opzione" è il valore del file di configurazione.
Il file di configurazione attuale /etc/chef/solo.rb
sarebbe simile a:
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"
Si noti inoltre che il file JSON può essere anche un URL remoto.
json_attribs "http://www.example.com/node.json"
È possibile utilizzare Ohai anche come libreria all'interno del file di configurazione, per rilevare la piattaforma o altri attributi per specificare quale file JSON utilizzare.
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"
E poi avresti, ad esempio, file JSON specifici della "piattaforma". Oppure si potrebbe usare o[:hostname]
, o[:domain]
o o[:fqdn]
per utilizzare i file JSON in base al nome host, dominio o fqdn. Ma una volta che inizi ad avere l'impalcatura dei server per supportare questo tipo di configurazione dinamica, potresti guardare a eseguire un Chef Server :-).