chef-solo
Liest standardmäßig die Konfiguration von /etc/chef/solo.rb
. Die Befehlszeilenparameter entsprechen den Konfigurationswerten, die in dieser Datei festgelegt werden können. Dies erfolgt über die mixlib-config-Bibliothek.
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
Die 'Option' ist der Wert der Konfigurationsdatei.
Die eigentliche Konfigurationsdatei /etc/chef/solo.rb
würde folgendermaßen aussehen:
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"
Beachten Sie auch, dass die JSON-Datei auch eine Remote-URL sein kann.
json_attribs "http://www.example.com/node.json"
Sie können Ohai auch als Bibliothek in der Konfigurationsdatei verwenden, um die Plattform oder andere Attribute zu erkennen und anzugeben, welche JSON-Datei verwendet werden soll.
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"
Und dann hätten Sie zum Beispiel "plattformspezifische" JSON-Dateien. Oder Sie könnten verwenden o[:hostname]
, o[:domain]
oder o[:fqdn]
JSON - Dateien auf dem Hostnamen, Domäne oder fqdn basieren. Sobald Sie jedoch über das Gerüst von Servern verfügen, um diese Art der dynamischen Konfiguration zu unterstützen, sollten Sie einen Chef-Server ausführen :-).