শেফ-একাকী আহবান করার আইডোমেটিক উপায়?


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

'বিকল্প' কনফিগার ফাইলের মান file

আসল কনফিগারেশন ফাইলটি /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 ফাইল থাকতে হবে ON অথবা আপনি কি ব্যবহার করতে পারে o[:hostname], o[:domain]অথবা o[:fqdn]হোস্ট-নেম, ডোমেইন বা FQDN উপর ভিত্তি করে তাদেরকে JSON ফাইল ব্যবহার করতে। তবে একবার আপনি এই জাতীয় গতিশীল কনফিগারেশন সমর্থন করার জন্য সার্ভারের ভাসমান হওয়া শুরু করলে, আপনি শেফ সার্ভার :-) চালানোর দিকে নজর দিতে পারেন।


1

@ জতিবারম্যান ইতিমধ্যে একটি দুর্দান্ত উত্তর লিখেছেন। শেফ-একাকী করার জন্য আমার ব্যক্তিগত উপায় এখানে। এটি বেসিকগুলি কাজ করে এবং সম্ভবত আপনাকে আরও বেশি বৈশিষ্ট্য যুক্ত করতে হবে /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রাখি যেমন আমার অতিরিক্ত কোনও যুক্তি মনে না রেখে শেফ-সোলো চালানো সম্ভব হয় like


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.