शेफ-सोलो को आमंत्रित करने का मुहावरेदार तरीका?


8

शेफ-सोलो को बुलाने का मुहावरेदार तरीका क्या है? अधिकांश साइटें ऐसा करती हैं:

chef-solo -c ~/solo.rb -j ~/node.json -r http://www.example.com/chef-solo.tar.gz

लेकिन यह लंबा है। ऐसा करने के लिए कुछ छोटे तरीके हैं जो मैं सोच सकता हूं:

  1. एक रेक कार्य ( rake chef-solo)।
  2. एक छोटी सी शेल स्क्रिप्ट ( run-chef-solo)।
  3. एक उपनाम (नाम को ओवरराइड कर सकता है, जैसे chef-solo)।

यह करने के लिए मुहावरेदार तरीका क्या है? अन्य शेफ उपयोगकर्ता शेफ को कैसे आमंत्रित कर रहे हैं?

जवाबों:


8

डिफ़ॉल्ट रूप से, chef-soloइसके कॉन्फ़िगरेशन को पढ़ता है /etc/chef/solo.rb। कमांड-लाइन पैरामीटर उन मानों को कॉन्फ़िगर करने के लिए अनुरूप है जो इस फ़ाइल में सेट किए जा सकते हैं। यह मिक्सलिब-कॉन्फिगर लाइब्रेरी का उपयोग करके किया जाता है।

  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"

आप 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]होस्ट नाम, डोमेन या FQDN के आधार पर JSON फ़ाइलों का उपयोग करने के लिए। लेकिन एक बार जब आप इस तरह के गतिशील कॉन्फ़िगरेशन का समर्थन करने के लिए सर्वर का मचान रखना शुरू करते हैं, तो आप एक शेफ सर्वर :-) चलाने पर गौर कर सकते हैं।


1

@jtimberman ने पहले ही एक शानदार जवाब लिखा है। यहाँ शेफ-सोलो को आमंत्रित करने का मेरा निजी तरीका है। इससे मूल बातें काम कर जाती हैं और आपको संभवतः /etc/chef/node.jsonअन्य उत्तर में वर्णित विकल्पों में से कुछ में और अधिक विशेषताओं को जोड़ना होगा ।

# cat > /etc/chef/solo.rb << EOF
cookbook_path    "/var/chef-solo/cookbooks"
json_attribs     "/etc/chef/node.json"
EOF

# cat > /etc/chef/node.json << EOF
{
  "run_list": ["recipe[foo]", "recipe[bar]"]
}
EOF

या तो अपनी रसोई की किताबों की नकल करें /var/chef-solo/cookbooksया उन्हें वेबसर्वर पर डालें और recipe_urlपैरामीटर का उपयोग करें । chef-soloनोड पर चलना सभी को इसे लागू करने के लिए आवश्यक है।

यदि संभव हो तो मैं सब कुछ करने की कोशिश करता हूं और solo.rbबिना किसी अतिरिक्त तर्क को याद किए बिना मुझे शेफ-सोलो चलाने में सक्षम होना पसंद है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.