Par défaut, chef-solo
lit sa configuration /etc/chef/solo.rb
. Les paramètres de ligne de commande correspondent aux valeurs de configuration qui peuvent être définies dans ce fichier. Cela se fait à l'aide de la bibliothèque 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'option est la valeur du fichier de configuration.
Le fichier de configuration réel /etc/chef/solo.rb
ressemblerait à:
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"
Notez également que le fichier JSON peut également être une URL distante.
json_attribs "http://www.example.com/node.json"
Vous pouvez également utiliser Ohai en tant que bibliothèque dans le fichier de configuration pour détecter la plate-forme ou d'autres attributs afin de spécifier le fichier JSON à utiliser.
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"
Et puis vous auriez des fichiers JSON spécifiques à la "plateforme", par exemple. Ou vous pouvez utiliser o[:hostname]
, o[:domain]
ou o[:fqdn]
d'utiliser des fichiers JSON basé sur le nom d' hôte, domaine ou FQDN. Mais une fois que vous commencez à disposer de l'échafaudage de serveurs pour prendre en charge ce type de configuration dynamique, vous pouvez envisager d'exécuter un serveur Chef :-).