আমি একাধিক প্রকল্পের সাথে কাজ করি, সুতরাং সিজিসির সমাধানটি আমার পক্ষে কার্যকর হবে না। সাধারণ বনাম কাস্টম কনফিগারেশনের একটি সমস্যাও রয়েছে (সংস্থাগুলিতে ঠিকানাগুলি ইত্যাদি সাধারণ, কনফিগারেশনে কিছুটা যাদুও রয়েছে)। অবশেষে আমি যে প্রকল্পটি স্থির করেছিলাম তা হ্যাক কিছুটা হলেও এটি সহজেই ব্যবহারযোগ্য।
~/.chef
গ্লোবালের পরিবর্তে , আমি শেফ-রেপোর মধ্যে '। শেফ' উপ-ডিরেক্টরি ব্যবহার করি, যা গিটে সংরক্ষণ করা হয় না (এতে যুক্ত হয় .gitignore
)। আমার কাছে ফাইল config/knife.rb
ফাইলও রয়েছে যা গিটটিতে চেক করা আছে এবং এতে ভাগ করা কনফিগারেশন রয়েছে। এটি এই স্নিপেট দিয়ে শুরু হয়:
root_dir = File.join(File.dirname(__FILE__), '..')
%w(knife-secrets.rb knife-local.rb).each do |conf_name|
conf = File.join(root_dir, ".chef", conf_name)
Kernel::load(conf) if File.exists? conf
end
এটি .chef/knife-local.rb
কাস্টম কনফিগারেশনযুক্ত ফাইলগুলি লোড করে (প্রাথমিক সংস্করণে এটি কেবল OPSCODE_USER='username'
ধ্রুবক যা পরে ব্যবহার করা হয় তবে এতে কোনও ছুরির কনফিগার থাকতে পারে) এবং .chef/knife-secrets.rb
এতে ভাগ করা গোপনীয়তা (এডাব্লুএস কী ইত্যাদি) রয়েছে etc
তার নীচে, নিয়মিত ছুরির কনফিগারেশন রয়েছে যা এই ফাইলগুলিতে সংজ্ঞায়িত ধ্রুবক ব্যবহার করে, যেমন:
client_key "#{root_dir}/.chef/#{OPSCODE_USER}.pem"
এইভাবে, আমি পুরো সংস্থা জুড়ে ছুরির কনফিগারেশনের স্ট্যান্ডার্ডাইজেশন অর্জন করেছি, যার ফলস্বরূপ যে কোনও উইকিতে ভাগ করা কোনও কোড স্নিপেট বা ছুরি অনুরোধ সবার জন্য কাজ করবে। নিজেই ছুরিতে যথেষ্ট বিভ্রান্তি এবং যাদু রয়েছে - বিভিন্ন কনফিগারেশন কেবল এটিকে আরও খারাপ করে দেবে। এছাড়াও, সবাই ছোট যাদু স্নিপেট সুবিধার পায়, মত এই এক করতে knife ssh
ব্যবহারকারীর কনফিগার ব্যবহার লগইন~/.ssh/config
ভাগ করা গোপনীয়তার বিষয়টিও রয়েছে: শেফ সার্ভারের বৈধতা কী, এডাব্লুএস কীগুলি সঞ্চিত রয়েছে knife-secrets.rb
, ইসি 2 এর এসএসএইচ প্রাইভেট কী, এনক্রিপ্টড ডেটা ব্যাগ কীগুলি এবং আরও অনেক কিছু। আমরা অবশ্যই চাই না যে সেগুলি সংগ্রহস্থল - বা, প্রকৃতপক্ষে যেখানেই নিরাপদে এনক্রিপ্ট করা হয়নি সেখানে সংরক্ষণ করা হোক। সুতরাং আমরা সেই ফাইলগুলিকে একটি ফাইল হিসাবে বিতরণ করি .tar.gz
যা সংস্থার প্রত্যেককে জিপিজি-এনক্রিপ্ট করা এবং ড্রপবক্সে ভাগ করা হয়েছে।
এই সমস্তটি কনফিগার করা জটিল হয়ে উঠছে, এবং আমি চাই দলের মধ্যে লোকেরা আসলে জিনিসটি ব্যবহার করবে, সুতরাং চূড়ান্ত উপাদান রয়েছে: যে rake init
কাজটি .chef
ডিরেক্টরি তৈরি করে , config/knife.rb
সেখানে সিমলিংকগুলি chef-secrets.tgz
, ডিক্রিপটস এবং আনসার ফাইলগুলি তৈরি করে এটি নিশ্চিত করে যে ব্যবহারকারীর ব্যক্তিগত ওপসকোড প্ল্যাটফর্ম কী আছে এবং .chef/knife-local.rb
সঠিকভাবে রয়েছে কনফিগার করা হয়েছে, ছুরি প্লাগইনগুলি সিমলিংক করে এবং ডিরেক্টরি এবং ভিতরে ফাইলগুলিতে উপযুক্ত অনুমতি সেট করে। এই টাস্কটি এমনভাবে সেট আপ করা হয়েছে যাতে ইতিমধ্যে ইনিশিয়াল করা সংগ্রহস্থল (যেমন গোপনীয়তা বা ছুরি প্লাগইন আপডেট করা) এ এটি বহুবার চালানো নিরাপদ।
নতুন কর্মী যুক্ত করা বা গোপনীয় পরিবর্তনগুলি আরও সহজ করার জন্য একটি সহায়ক কাজও রয়েছে যা সমস্ত গোপনীয়তার পুনঃলিখন করে, তারবালকে প্রত্যেকের কাছে এনক্রিপ্ট করে এবং ড্রপবক্সে অনুলিপি করে।
একাধিক পরিবেশ সম্পর্কিত: শেফের পরিবেশগত নামক একটি বৈশিষ্ট্য রয়েছে । আমি এটি এখনও ব্যবহার করি নি, তবে এটি আপনার যা প্রয়োজন তা করা উচিত। আপনি পৃথকভাবে দুটি পৃথক হোস্টেড শেফ সংগঠন বা শেফ সার্ভার রেখে উত্পাদন পরিবেশকে (উত্পাদন এনভির সাথে যে কোনও কী সম্পর্কিত কোনও কী থাকা বিকাশকারীদের এড়াতে) কঠোরভাবে পৃথক করতে পারেন। এই ছুরি.আরবি স্নিপেটটি দেখায় যে কীভাবে বর্তমানে চেক আউট ব্রাঞ্চের উপর ভিত্তি করে ছুরিটি আলাদা উপায়ে কনফিগার করতে হয় - আপনি পরিবেশটি পাশাপাশি শেফ সার্ভারের ইউআরএল সেট করতে এটি ব্যবহার করতে পারেন। এর রয়েছে ছুরি প্লাগ ইন নামক ছুরি-প্রবাহ , আরো সম্পূর্ণ দুই সংগঠন কর্মপ্রবাহ করে।
.chef
পরিবেশের পরিবর্তনশীল বা কিছু ব্যবহার করতে আপনি ফোল্ডারটি সেট আপ করতে পারেন?