একটি দলের পরিবেশে শেফ কুকবুকগুলি পরিচালনা করুন


13

আমি শেফ শিখছি এবং আমার দলের সাথে কাজ করার জন্য সবকিছু কাঠামোগত করতে সমস্যা করছি।

প্রারম্ভিকদের জন্য, মনে হচ্ছে আপনার একটি শেফ-রেপো ফোল্ডার তৈরি করা উচিত, যেখানে আপনি আপনার নোডগুলি পরিচালনা করতে ব্যবহৃত কুকবুকগুলি সংরক্ষণ এবং সংশোধন করবেন।

আমি বিভিন্ন প্রকল্পে কাজ করি এবং এর মধ্যে প্রতিটিই ইতিমধ্যে গিট সোর্স নিয়ন্ত্রণে রয়েছে। আদর্শভাবে আমি আমার প্রতিটি প্রকল্পে একটি করে শেফ-রেপো ফোল্ডারটি সেই প্রকল্পের কুকবুকের সাথে রাখতে পারি?

তবে শেফ-রেপো ফোল্ডারে আমাকে আমার ছুরির কনফিগারেশন এবং আমার কী বৈধতা সহ একটি কনফিগারেশন ফোল্ডার (.chef) যুক্ত করতে হবে এবং এগুলি আমার কাছে নির্দিষ্ট। গিটিগনোর ফাইলটিতে কেবল। শেফ ফোল্ডারটি যুক্ত করা কি স্বাভাবিক?

আমি বুঝি কুকবুকগুলি শেফ সার্ভারে আপলোড করা হবে তারপরে মোতায়েন করা হবে। অন্যান্য দলগুলি প্রচুর কাজের সদৃশ না করে কীভাবে উত্পাদন পরিবেশ থেকে মঞ্চকে পৃথক করে? আমাদের একটি মাস্টার শাখা যা আমাদের প্রযোজনা শাখা, একটি দেব শাখা যা আমাদের স্টেজিং শাখা (ওয়েবসাইটের অনুরোধগুলির 5% এর চেয়ে কম প্রাপ্তি) এবং বৈশিষ্ট্য শাখা রয়েছে। বেশিরভাগ সময়, স্থিতিশীল যখন দেব শাখাটি মাস্টার শাখায় একত্রী হয়। পৃথক উপায়ে দুটি পরিবেশ থাকতে সক্ষম হয়ে আমরা কীভাবে কুকবুকগুলি আপলোড করতে পারি?

সাহায্যের জন্য ধন্যবাদ!


.chefপরিবেশের পরিবর্তনশীল বা কিছু ব্যবহার করতে আপনি ফোল্ডারটি সেট আপ করতে পারেন?
সিজেজোজ

আপনি দয়া করে আরও বিস্তারিতভাবে আপনার লক্ষ্য বর্ণনা করতে পারেন? আপনি শেফ ব্যবহার করে কোন ধরণের অবকাঠামো স্বয়ংক্রিয় করতে চান? আপনি বিভিন্ন শাখা উল্লেখ করেছেন - আপনি যদি সফ্টওয়্যার স্থাপনার কথা বলছেন তবে জেনকিনসের মতো সিআই সরঞ্জাম আরও ভাল সমাধান হতে পারে।
geewiz

এটা এত সুন্দর যে পুতুল কীভাবে এই জাতীয় পরিবেশকে সমর্থন করে, স্থানীয়ভাবে।
টম ও'কনোর

উত্তর:


15

আমি একাধিক প্রকল্পের সাথে কাজ করি, সুতরাং সিজিসির সমাধানটি আমার পক্ষে কার্যকর হবে না। সাধারণ বনাম কাস্টম কনফিগারেশনের একটি সমস্যাও রয়েছে (সংস্থাগুলিতে ঠিকানাগুলি ইত্যাদি সাধারণ, কনফিগারেশনে কিছুটা যাদুও রয়েছে)। অবশেষে আমি যে প্রকল্পটি স্থির করেছিলাম তা হ্যাক কিছুটা হলেও এটি সহজেই ব্যবহারযোগ্য।

~/.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সঠিকভাবে রয়েছে কনফিগার করা হয়েছে, ছুরি প্লাগইনগুলি সিমলিংক করে এবং ডিরেক্টরি এবং ভিতরে ফাইলগুলিতে উপযুক্ত অনুমতি সেট করে। এই টাস্কটি এমনভাবে সেট আপ করা হয়েছে যাতে ইতিমধ্যে ইনিশিয়াল করা সংগ্রহস্থল (যেমন গোপনীয়তা বা ছুরি প্লাগইন আপডেট করা) এ এটি বহুবার চালানো নিরাপদ।

নতুন কর্মী যুক্ত করা বা গোপনীয় পরিবর্তনগুলি আরও সহজ করার জন্য একটি সহায়ক কাজও রয়েছে যা সমস্ত গোপনীয়তার পুনঃলিখন করে, তারবালকে প্রত্যেকের কাছে এনক্রিপ্ট করে এবং ড্রপবক্সে অনুলিপি করে।

একাধিক পরিবেশ সম্পর্কিত: শেফের পরিবেশগত নামক একটি বৈশিষ্ট্য রয়েছে । আমি এটি এখনও ব্যবহার করি নি, তবে এটি আপনার যা প্রয়োজন তা করা উচিত। আপনি পৃথকভাবে দুটি পৃথক হোস্টেড শেফ সংগঠন বা শেফ সার্ভার রেখে উত্পাদন পরিবেশকে (উত্পাদন এনভির সাথে যে কোনও কী সম্পর্কিত কোনও কী থাকা বিকাশকারীদের এড়াতে) কঠোরভাবে পৃথক করতে পারেন। এই ছুরি.আরবি স্নিপেটটি দেখায় যে কীভাবে বর্তমানে চেক আউট ব্রাঞ্চের উপর ভিত্তি করে ছুরিটি আলাদা উপায়ে কনফিগার করতে হয় - আপনি পরিবেশটি পাশাপাশি শেফ সার্ভারের ইউআরএল সেট করতে এটি ব্যবহার করতে পারেন। এর রয়েছে ছুরি প্লাগ ইন নামক ছুরি-প্রবাহ , আরো সম্পূর্ণ দুই সংগঠন কর্মপ্রবাহ করে।


বিস্তারিত উত্তর দেওয়ার জন্য ধন্যবাদ। কাজটি সেট আপ করার ক্ষেত্রে অন্তত এটির অর্থ হ'ল আমি সুস্পষ্ট কিছু মিস করিনি ...
অ্যালেক্স রেকারি

3

আপনাকে দুটি শেফ সার্ভার স্থাপন করতে হবে, একটি উত্পাদনের জন্য এবং একটি উন্নয়নের জন্য। কারণটি হ'ল কোনও একা শেফ সার্ভার ব্রাঞ্চযুক্ত উন্নয়নের পক্ষে সমর্থন করতে পারে না; এমনকি পরিবেশের সাথে।

অথবা আপনি শেফ সার্ভার ধারণাটি ত্যাগ করতে এবং শেফ-একক ব্যবহার করতে পারেন। আপনি গিটে আপনার কুকবুকগুলি বজায় রাখতে পারেন। আপনি শাখা এবং মার্জ করতে পারেন। আপনি ছুরি শংসাপত্রগুলির সাথে সমস্যাগুলি উপেক্ষা করতে পারেন কারণ আপনি এগুলি আর ব্যবহার করবেন না।

আপনি ছুরি অনুসন্ধান বা ডেটা ব্যাগ ** ব্যবহার করতে পারবেন না। তবে কিছু লোকের যে কোনও উপায়ে এই বৈশিষ্ট্যগুলির প্রয়োজন নেই।

** ঠিক আছে আপনি এইভাবে বাছাই করতে পারেন: http://wiki.opscode.com/display/chef/Data+Bags#DataBags-DataBagswithChefSolo


2

আমার বাড়িতে আমার দুটি ডিরেক্টরি রয়েছে,। শেফ এবং শেফ-রেপো। শেফ-রেপো গিট হয়। .Chef এমন কিছু ব্যক্তিগত ডিরেক্টরি যা ছুরির জন্য ডিফল্ট। আপনার গোপনীয় জিনিসগুলি। শেফ থেকে গিটে লাগাতে হবে না; ছুরি ~ / .chef খুঁজবে।


2

আপনার ~ / .chef ডিরেক্টরি গিট রেপোতে থাকা উচিত নয়।

আমার একটি ~ / প্রকল্প / ডিরেক্টরি রয়েছে যার অধীনে আমি আমার শেফ রেপো রাখি। এতে আমার সার্ভারের কনফিগারেশন চলে।

আমার শেষ কাজটি রুবি অন অন রেলে দোকানে সিস্টেম ইঞ্জিনিয়ার হিসাবে ছিল। আমাদের এনগিনেক্স, বার্নিশ এবং রেল কনফিগারেশন (অন্যদের মধ্যে) শেফ রেপোতে যায়, তবে রেল অ্যাপসটি নিজেরাই পৃথক গিট রেপোতে রাখা হয়েছিল এবং আলাদাভাবে মোতায়েন করা হয়েছিল।

আমাদের মঞ্চ পরিবেশটি একক সার্ভার ছিল যা পুরো স্টেজিং পরিবেশটি চালিয়েছিল। এটি আদর্শ ছিল না কারণ এটি উত্পাদনের সাথে সাদৃশ্যপূর্ণ না যেখানে রেল থিন্স এবং ডিবি পৃথক বাক্সে ছিল। আমি যা প্রস্তাব করব তা হ'ল শেফের পরিবেশগুলি পৃথক স্টেজিং এবং প্রোডাকশন ব্যবহার করতে। (আমি যখন সেখানে পৌঁছেছিলাম তখন এটিই ছিল, আমি চলে যাওয়ার আগে ঠিক করার মতো সময় আমার হাতে নেই))

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