โดยค่าเริ่มต้นอ่านการกำหนดค่าของมันมาจาก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
'ตัวเลือก' คือค่าไฟล์กำหนดค่า
ไฟล์ config ที่แท้จริง/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 แต่เมื่อคุณเริ่มมี scaffolding ของเซิร์ฟเวอร์เพื่อรองรับการกำหนดค่าแบบไดนามิกนี้คุณอาจมองไปที่การเรียกใช้ Chef Server :-)