উত্তর:
একটি ডোমেন-নির্দিষ্ট ভাষা আপনার কোডের লেখার পরিমাণের মধ্যে একটি বড় পার্থক্য করে। উদাহরণস্বরূপ, আপনি তর্ক করতে পারেন যে এর মধ্যে খুব বেশি পার্থক্য নেই:
chmod 640 /my/file
এবং
file { "/my/file":
mode => 640,
}
তবে এর মধ্যে অনেক পার্থক্য রয়েছে:
FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
# where the URL contains "Hello world"
এবং
file { "/my/file":
mode => 640,
owner => foo,
group => bar,
content => "Hello world",
}
উইজেট ব্যর্থ হলে কী হবে? আপনার স্ক্রিপ্ট কীভাবে এটি পরিচালনা করবে? এবং আপনার স্ক্রিপ্টে এর পরে যদি এমন কিছু থাকে যার জন্য contents ফাইলের সঠিক বিষয়বস্তু থাকা উচিত?
আপনি তর্ক করতে পারেন যে echo "Hello world" > $FILE
স্ক্রিপ্টটি কেউ ঠিক রাখতে পারে , প্রথম উদাহরণে স্ক্রিপ্টটি ক্লায়েন্টের উপর চালানো আবশ্যক, যখন পুতুল সার্ভারে এই সমস্তগুলি সংকলন করে। সুতরাং আপনি যদি সামগ্রীটি পরিবর্তন করেন তবে আপনাকে কেবল এটি সার্ভারে পরিবর্তন করতে হবে এবং এটি যতটা সিস্টেমে আপনি এটি লাগাতে চান তার জন্য এটি পরিবর্তন করে। এবং পুতুল নির্ভরতা পরিচালনা করে এবং স্বয়ংক্রিয়ভাবে আপনার জন্য সমস্যা হস্তান্তর করে।
কেবল কোনও তুলনা নেই - সঠিক কনফিগারেশন পরিচালনার সরঞ্জামগুলি আপনার সময় এবং জটিলতা বাঁচায়। আপনি যত বেশি চেষ্টা করবেন, তত বেশি শেল স্ক্রিপ্ট অপ্রতুল বলে মনে হচ্ছে এবং পুতুলের সাহায্যে আরও বেশি প্রচেষ্টা আপনি সংরক্ষণ করবেন।
এটি একটি অজনপ্রিয় মতামত হবে, তবে কনফিগারেশন ম্যানেজমেন্ট সিস্টেমগুলি আরও ভাল নয়। কখনও কখনও সহজ সত্যিই সেরা।
আপনার চয়ন করা কনফিগারেশন সিস্টেমের সাথে একটি নির্দিষ্ট লার্নিং কার্ভ এবং প্রশাসনিক ওভারহেড যুক্ত রয়েছে। আপনি সর্বোপরি নির্ভরতা প্রবর্তন করার পরে। যে কোনও অটোমেশনের মতো আপনাকে অবশ্যই সতর্কতা অবলম্বন করতে হবে যে মোতায়েন করা কনফিগারেশনে সুরক্ষা বজায় রয়েছে।
আমি কেবলমাত্র বেশ কয়েকটি দৃষ্টান্ত পেয়েছি যেখানে আমরা কনফিগারেশন পরিচালনা স্থাপন করেছি এবং এটি আটকে গেছে। এটি সর্বদা ছিল যখন পুনরাবৃত্তিযোগ্য কনফিগারেশন সহ প্রচুর সংখ্যক সিস্টেম ছিল এবং কনফিগারযোগ্য কুকি-কাটার স্থাপনার সঞ্চালনের প্রয়োজন ছিল।
আপনি নিজের প্রশ্নের উত্তর দিয়েছেন ...
অটোমেশনটি আরও স্কেলযোগ্য এবং আনুষ্ঠানিক হয়ে উঠছে । পুতুল এবং শেফকে আজকাল মান বিবেচিত করা হয় ( কাজের বিজ্ঞাপনগুলি দেখুন )।
কাবলেড-একসাথে শেল স্ক্রিপ্টগুলির নিজস্ব জায়গা রয়েছে তবে তারা ডিওওএসস আন্দোলনের প্রেক্ষাপটে স্কেলযোগ্য নয় । পাঠযোগ্যতা তারই একটি অংশ।
শেফ একটি জটিল অবকাঠামো সেটআপ পরিচালনা এবং সংস্করণ করা অনেক সহজ করে তোলে , বিশেষত কোনও ধরণের মেঘের পরিবেশের তুলনায় ম্যানুয়ালি এফটিপি করা বা একটি আনুষাঙ্গিকভাবে ফ্যাশনে সংগঠিত শেল স্ক্রিপ্টগুলির একগুচ্ছ স্ক্রিপ করা। আপনাকে কতটা নির্ভরশীলতা পরিচালনা করতে হবে তার উপর নির্ভর করে এই জয়ের আকারটি অনেকগুলি পরিবর্তিত হতে পারে, সিএম সমাধানে স্থানান্তরিত করার সিদ্ধান্তটি অনেক লোকের কাছে একটি অ-সুস্পষ্ট।
বাস্তব (প্রায়ই অগোচর) পাচক বা রাঁধুনি সুবিধার হয় idempotence । ওভারল্যাপিং স্বার্থের সাথে চালিত রেসিপিগুলির সংমিশ্রণ নির্বিশেষে কোনও সংস্থার রাজ্য সম্পর্কে নিশ্চিত হতে সক্ষম হওয়া শেল স্ক্রিপ্ট কনফিগারেশনের ক্ষেত্রে একটি বিশাল সুবিধা। আপনার যদি এখন কনফিগারেশনের জন্য শেল স্ক্রিপ্ট রয়েছে তবে নিজেকে জিজ্ঞাসা করুন যে এগুলির মধ্যে কতগুলি অনিচ্ছাকৃত / অনাকাঙ্ক্ষিত পরিণতি ছাড়াই একাধিকবার চালানো যেতে পারে?
একটি যথাযথ সিএম সমাধান ক্রস প্ল্যাটফর্ম অটোমেশন এবং দলের সহযোগিতা সহজ করে স্কেল সাফল্য নিশ্চিত করতে সহায়তা করে। যদিও এটি সুশৃঙ্খল, সঠিকভাবে রক্ষণাবেক্ষণ করা, শেল স্ক্রিপ্টগুলির সংস্করণযুক্ত গোষ্ঠী দিয়ে এগুলি সম্পাদন করা সম্ভব; আপনি নিজেকে "কেন" জিজ্ঞাসা করতে হবে। শেফ / পুতুল এবং অনুরূপ প্রযুক্তিগুলি এলো কারণ একদল প্রতিভাবান সাইসপস বারবার একই সমস্যাগুলি সমাধান করতে পেরে ক্লান্ত হয়ে পড়েছিল এবং আমাদের আরও ভাল বিকল্প দেওয়ার জন্য প্রস্তুত হয়েছিল।
আধুনিক কনফিগারেশন পরিচালনার সরঞ্জাম যেমন পুতুল এবং শেফ আপনাকে একটি কনফিগার করা সার্ভার অর্জনের জন্য প্রয়োজনীয় ক্রিয়াকলাপগুলি সম্পর্কে চিন্তাভাবনা করার পরিবর্তে কোনও সিস্টেমের অবস্থা নির্ধারণ করতে দেয় ।
উদাহরণস্বরূপ, আপনার chmod কমান্ড ধরে নিয়েছে যে ফাইলটি বিদ্যমান, ফাইলটির মালিক ব্যবহারকারী উপস্থিত রয়েছে, ডিরেক্টরিগুলি তৈরি হয়েছে, ইত্যাদি। আপনার লিপিটি অবশ্যই এই সমস্ত পূর্বশর্ত বিবেচনা করতে হবে।
রাজ্য-ভিত্তিক কনফিগারেশন পরিচালনার সরঞ্জামগুলি সহজ: আপনি কেবল যত্নবান হন যে ফাইলটির সঠিক অনুমতি রয়েছে। কীভাবে এটি অর্জিত হয় তা হল সরঞ্জামটির সমস্যা।
chmod
ফাইলটি বিদ্যমান বলে ধরে নেয় না কারণ ফাইলটি স্ক্রিপ্ট দ্বারা তৈরি হয়েছিল বা অস্তিত্বের জন্য পরীক্ষা করা হয়েছিল।
সার্ভারগুলি যদি আপনার কাছে নিষ্পত্তিযোগ্য হয় বা আপনি একবারে কয়েকজনের চেয়ে বেশি দাঁড়ানোর কারণ হয়ে থাকেন তবে একটি পূর্ণ বিকাশযুক্ত সিএম সিস্টেম শেল স্ক্রিপ্টগুলির একটি সিরিজের চেয়ে আপনার প্রয়োজনগুলি আরও ভালভাবে পূরণ করবে।
যদি আপনার বিল্ডের প্রয়োজনীয়তাগুলি বিনয়ী হয়, (বা শৈল্পিকভাবে হ্যান্ড ক্র্যাফট জৈব ফ্রি-রেঞ্জ ফেয়ার-ট্রেড সার্ভারগুলি পছন্দ করতে চান), তবে এটি সহজ রাখুন।
ব্যাক্তিগতভাবে, কোনও অতীত গিগে শেফকে ব্যাপকভাবে ব্যবহার করার পরে, আমি এই গিগে 'এটিকে সহজ রাখার' চেষ্টা করেছি, কিন্তু শেফ যে আদিমতা, বিমূর্ততা এবং শক্তি সরবরাহ করেছিল তা আমি সত্যিই মিস করেছি। এমনকি যদি আপনি এমন কোনও পরিস্থিতিতে পৌঁছে যান যা আপনি কয়েকটি শেল কমান্ড থেকে আপনার প্রয়োজনীয় জিনিসগুলি পেতে পারেন, আপনি কেবল 'কমান্ড' ব্লকযুক্ত চালনা করতে পারেন, শেল কমান্ডগুলি ঠিক যেমন লিখতে হবে তেমন লিখতে পারেন entering
এই বলে যে, আপনি সার্ভার ছাড়াই শেফ চালাতে পারেন (শেফ-একাকী), এবং আমি নিশ্চিত যে পুতুলের একটি অ্যানালগ রয়েছে, যেখানে আপনি এখনও কোনও কেন্দ্রীয় সার্ভার চালনা না করে অন্যের কুকবুক এবং রেসিপিগুলি লাভ করতে পারবেন।
আরেকটি সুবিধা হ'ল সম্প্রদায়: প্রচুর লোক রয়েছে (যার মধ্যে অনেকগুলি আপনার চেয়ে স্মার্ট এবং / বা আরও অভিজ্ঞ হবে)। ব্যক্তিগতভাবে আমি এটি ভালবাসি যখন অন্য কেউ আমার জন্য আমার কাজটি করে থাকে, প্রায়শই আমার চেয়ে বেশি বিস্তৃত হয়।
আমি একটি শেল স্ক্রিপ্ট-ভিত্তিক সার্ভার অটোমেশন কাঠামো তৈরি করেছি: https://github.com/myplaceonline/posixcube
আমি নিশ্চিত যে এই ধরণের প্রজেক্ট তৈরির ক্ষেত্রে আমি প্রথম নই তবে আমার প্রয়োজন অনুসারে এটির মতো কিছু আমি খুঁজে পেলাম না, তাই আমি ভেবেছিলাম যে অন্যরাও এটি দরকারী হতে পারে। আমি কেবল শেফের সাথে অভিজ্ঞতা অর্জন করেছি, তবে আমি যখন উত্তর এবং অন্যান্যদের দিকে নজর দিতে শুরু করলাম, আমি শেল স্ক্রিপ্টগুলিকে একটি শট দিতে চাইছিলাম এবং আমি এখনও পর্যন্ত ফলাফলটি পছন্দ করি।