سؤال لماذا استخدام الشيف / الدمى على نصوص القشرة؟


جديد لأدوات الدمى والشيف. يبدو أن المهمة التي يقومون بها يمكن القيام بها باستخدام برنامج shell. ربما تم القيام به في مخطوطات شل حتى جاء هذا على طول.

أوافق على أنهم أكثر قابلية للقراءة. ولكن ، هل هناك أي مزايا أخرى حول نصوص shell بالإضافة إلى كونها قابلة للقراءة فقط؟


78
2018-05-01 10:13


الأصل




الأجوبة:


تحدث لغة خاصة بمجال معين اختلافًا كبيرًا في مقدار الشفرة التي تكتبها. على سبيل المثال ، يمكنك أن تجادل بأنه لا يوجد فرق كبير بين:

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",
}

ماذا يحدث إذا فشل wget؟ كيف سيعالج النص الخاص بك ذلك؟ وماذا يحدث إذا كان هناك شيء بعد ذلك في النص البرمجي يتطلب FILE $ أن يكون هناك بالمحتويات الصحيحة؟

قد تجادل أنه يمكن للمرء فقط أن يضع echo "Hello world" > $FILE في البرنامج النصي ، إلا أنه في المثال الأول يجب تشغيل البرنامج النصي على العميل ، في حين أن الدمى تقوم بتجميع كل هذا على الخادم. لذا إذا قمت بتغيير المحتوى ، فكل ما عليك فعله هو تغييره على الخادم وتغييره لعدد من الأنظمة التي تريد وضعها فيه. وتتعامل الدمى مع تبعياتك ومشاكل النقل لك تلقائيًا.

ليس هناك أي مقارنة - أدوات إدارة التكوين المناسبة توفر لك الوقت والتعقيد. كلما حاولت أن تفعل أكثر ، يبدو أن المزيد من نصوص القشرة غير كافية ، وكلما زاد الجهد الذي ستوفره من خلال القيام بذلك مع دمية.


55
2018-05-01 11:14



Paul Gear ، من التبسيط المفرط القول بأن أدوات إدارة التهيئة هي الطريقة المثلى في المدى الطويل. على سبيل المثال ، باستخدام برنامج AWS ، يمكن لبرنامج نصي خاص بـ shell إنشاء الخادم من الصفر ، وتشغيل بعض الاختبارات ، وبمجرد التأكد من أن زر AWS لا بأس به ، قم بإنشاء صورة. بعد ذلك ، يمكنك نشر هذه الصورة إلى معاينة أو بيئة مرحلية لإجراء مزيد من الاختبارات ، بمجرد التحقق من صحة الصورة لأهدافك ، فإنك تدفع إلى الإنتاج. لا تساعد أدوات إدارة التكوين على الإطلاق في هذا السيناريو. - Derek Litz
الآن إذا كنت ترغب في إدارة 100 من الخوادم المخصصة التي يستخدمها الأشخاص يوميًا (وليس لديك سوى القليل من التحكم في ما يفعلونه ، عن طريق الخطأ أو لا) ، فهذا هو المكان الذي يجب استخدام أدوات إدارة التهيئة فيه. - Derek Litz
هذا ليس مثال مقنع جدا. يمكن أن أبدأ بـ wget ثم لن ينتهي بي الأمر في حالة غريبة. هل الملف مثل المعاملة التي سيتم إرجاعها إذا لم تنجح أي من الخطوات؟ - PSkocik


سيكون هذا الرأي غير محبوب ، لكن أنظمة إدارة التكوين ليست بالضرورة أفضل. في بعض الأحيان بسيطة حقا هو الأفضل.

هناك منحنى تعلم واضح ومسؤول إداري مرتبط بنظام التكوين الذي تختاره. أنت بعد كل إدخال التبعية. كما هو الحال مع أي أتمتة ، يجب أن تكون حذراً من الحفاظ على الأمان في التكوينات المنشورة.

لم يكن لدي سوى بضع حالات حيث نشرنا إدارة التكوين وتمسك. كان ذلك دائمًا عندما كان هناك عدد كبير من الأنظمة ذات التكوين المتكرر والحاجة إلى إجراء عمليات نشر ملفات تعريف الارتباط القابلة للتكوين.


32
2018-05-01 14:58



عندما تكون تكلفة إدارة البيئة كبيرة جدًا ، فإن إدارة الأتمتة أرخص حقًا. إذا كان من الأسهل إجراء تغييرات في النص البرمجي تتم إدارته في Git أو إعداد أشياء في معديدم ssh ، فإننا نقوم بذلك. أهم شيء بالنسبة لي هو أن أقوم بمراقبة الأنظمة وتحقق من أن كل شيء يعمل كما هو متوقع. طالما يتم تنبيهي عندما يتم تكوين شيء ما بشكل غير صحيح ، فليس من الأهمية بمكان كيف يتم تكوينه. - kenchilada
whwhite "عندما تقرر أتمتة مقابل لا" xkcd.com/1205 - MikeyB
هناك أدوات أكثر حداثة مثل Ansible ليس لها سوى عدد أقل من النشر / الإدارة أعلى من الشيف أو الدمى ، الأمر الذي يتطلب القليل من التبعيات (إن Ansible على وجه الخصوص بدون وكيل). هذا يقلل حقا شريط لاعتماده. - GomoX
ewwhite تقوم بالتشغيل التلقائي عندما ترغب في الحصول على إنتاجية شخصية. تتعلم عن طريق الأتمتة ، لا تتعلم من خلال القيام بالمهام الدنيوية. التعلم = زيادة الإنتاجية والتحسين التكراري. الأتمتة تجمع مع هذا لإنتاج مزيد من الإيجابيات. إنها كرة ثلجية إيجابية بدلاً من كرة سلبيه. التقدم التقني مقابل الديون الفنية. - Derek Litz
@ A-B-B لا ، هذا ليس ضمنًا. أنا لا أذكر حتى نصوص shell ، أذكر الأتمتة كممارسة عامة. يمكنك أتمتة الأشياء باستخدام نصوص shell وتعلم تجريد البرامج النصية بدلاً من القيام بالأشياء يدويًا والتي لن توفر عليك وقت القيام بهذه المهمة مرة أخرى ، بل ستحول دون حدوث الأخطاء. أيضا ، يجب أن تكون قادرا على كتابة السيناريو التالي أفضل قليلا ثم آخر. كرة ثلوج موجبة ... لكن ، إذا كنت خبيرًا في كتابة النصوص البرمجية ولا تقوم بإنشاء نص برمجي يمكنك تشغيله مرة أخرى ، فإنه لا يساعدك على التعلم أو توفير الوقت بأي طريقة. - Derek Litz


لقد أجبت عن سؤالك الخاص ...

أصبح التشغيل الآلي أكثر قابلية للتحديث وإضفاء الطابع الرسمي. تعتبر الدمى والشيف معايير هذه الأيام (تحقق من اعلانات وظائف).

تحتوي برامج نصية shell المجمعة على مكانها ، ولكنها موجودة ليس قابلة للتوسع في سياق حركة DevOps. القراءة هي جزء من ذلك.


23
2018-05-01 10:40



هل نصوص القشرة بطريقة أو بأخرى أقل رسمية؟ هل يقتبس عرض إعلانات الوظائف حجة مقنعة؟ و devops هو عار للغاية ، ل / هو غير مستغل كمطور. الرابط لا يقول شيئًا عن قابلية التطوير. هل الادعاء بأن نصوص القشرة غير قابلة للتوسع؟ أعتقد أن الدمية مثيرة للاهتمام ، ولكن ليس بالضرورة للأسباب في الإجابة. - A-B-B
إعلانات الوظائف تعكس السوق الحقيقي لمهارات معينة. نعم ، استخدام إدارة التهيئة للغرض المقصود هو أكثر قابلية للتوسع وأكثر قوة وأسهل في التوثيق من نصوص shell. لقد كنت في العديد من البيئات ، ولم يتم إنشاء معظم النصوص التي أراها بطريقة يمكن للمرء أن يعتبرها "جودة الإنتاج" وينظم للتعامل مع الاستثناءات. انظر الإجابة المقبولة لفهم السبب. - ewwhite
"و devops هو عار للغاية ، ل / هو مستغل بشكل كبير كمطور". هذا ببساطة غير صحيح. DevOps هو أحد تخصصات التطوير ، تمامًا مثل تطوير الويب. لا تزال أنماط وممارسات تطوير البرامج قيد التطبيق. يجب أن تقرأ عن DevOps. - Chaim Eliyah


الشيف يجعلها أسهل بكثير لإدارة و الإصدار الإعداد للبنية التحتية المعقدة ، وخاصة في أي نوع من بيئة السحاب مقابل الحاجة إلى ftp يدويا أو scp حفنة من البرامج النصية قذيفة نظمت بطريقة غير قياسي. اعتمادًا على عدد التبعيات التي تحتاج إلى إدارتها ، يمكن أن يختلف حجم هذا الفوز بشكل كبير ، مما يجعل القرار بالانتقال إلى حل CM أمرًا غير واضح للكثير من الأشخاص.

الفائدة الحقيقية (غير المجهزة في الغالب) من الشيف هي idempotence. أن تكون قادراً على أن تكون على يقين من حالة المورد بغض النظر عن الجمع بين الوصفات التي يتم تشغيلها مع الاهتمامات المتداخلة هي فائدة كبيرة على تكوين برنامج shell. إذا كان لديك نصوص برمجية للتهيئة الآن ، اسأل نفسك عن عدد المرات التي يمكن تشغيلها عدة مرات دون عواقب غير مقصودة / غير مرغوب فيها؟

يساعد حل CM الصحيح على ضمان النجاح على نطاق واسع عن طريق تبسيط التشغيل التلقائي عبر النظام الأساسي والتعاون الجماعي. في حين أنه من الممكن تحقيق كل ذلك من خلال مجموعة من مخطوطات الصدفة المنظمة بشكل جيد والمحافظ عليها بشكل جيد. عليك أن تسأل نفسك "لماذا". الشيف / العرائس والتكنولوجيات المشابهة نشأت لأن مجموعة من SysOps الموهوبين تعبوا من الاضطرار إلى حل هذه المشاكل نفسها مرارًا وتكرارًا ، ومنحنا خيارًا أفضل.

القطع الرئيسية:

  • Idempotence
  • سهولة إدارة التبعية (الإصدار)
  • منظمة موحدة (مقبولة على مستوى الصناعة)
  • التجريد لفصل مهام تكوين الخادم من تفاصيل مستوى النظام
  • القدرة على الاستفادة من معرفة المجتمع (مضمونة لاحتضان جميع المبادئ المذكورة أعلاه)

13
2018-05-03 19:11



Idempotence يكاد يكون من المستحيل مع ss. يتم إدارة التبعيات بشكل جيد بواسطة yum / apt ، إلخ. القبول غير ذي صلة. المعرفة المجتمعية موجودة من أجل ss. ومع ذلك ، فأنا أوافق على أن عدم الحاجة إلى النسخ على مجموعة من النصوص ، وكذلك تهيئة الأنظمة بشكل مركزي ، أمر مفيد. أسمع الدمى يتطلب عامل من جانب العميل. - A-B-B


أدوات إدارة التكوين الحديثة مثل Puppet و Chef تسمح لك بتحديد حالة من نظام بدلا من القلق أنشطة ضرورية لتحقيق خادم تكوينه.

على سبيل المثال ، يفترض الأمر chmod أن الملف موجود ، وأن المستخدم الذي يمتلك الملف موجود ، وأن الدلائل قد تم إنشاؤها ، وهكذا. لذلك يجب على السيناريو الخاص بك النظر في كل هذه المتطلبات الأساسية.

أدوات إدارة التكوين المستندة إلى الحالة أبسط: أنت تهتم فقط أن الملف يحتوي على الأذونات الصحيحة. كيف يتم تحقيق ذلك هو مشكلة الأداة.


10
2018-05-20 02:19



في الواقع chmod لا يفترض وجود الملف لأن الملف تم إنشاؤه بواسطة البرنامج النصي أو اختباره. - A-B-B


إذا كانت الخوادم قابلة للتخلص منك ، أو كان لديك سبب للوقوف أكثر من زوجين في وقت واحد ، فإن نظام CM الكامل سوف يلبي احتياجاتك بشكل أفضل من سلسلة من برامج نصية shell.

إذا كانت احتياجاتك للبناء متواضعة ، أو (أو ترغب في خوادم التجارة الحرة المجانية الحرفية الحرفية اليدوية الحرفية) ، فعليك أن تبقيها بسيطة.

شخصياً ، بعد أن استعملت الشيف على نطاق واسع في حفل أسبق ، حاولت أن "أبقيه بسيطاً" في هذا الحفلة ، لكنني أفتقد حقا الأوليات ، التجريد ، والسلطة التي قدمها الشيف. حتى إذا وصلت إلى موقف حيث يمكنك الحصول على ما تحتاجه من أوامر shell ثنائية ، يمكنك ببساطة تشغيل تلك مع كتلة "command" ، وإدخال أوامر shell الخاصة بك تمامًا كما ستكتبها في shell.

مع ذلك ، يمكنك تشغيل الشيف بدون خادم (chef-solo) ، وأنا متأكد من أن دمية لديها نظير ، حيث يمكنك الاستمرار في الاستفادة من كتب الطبخ والوصفات الأخرى دون تشغيل خادم مركزي.

فائدة أخرى هي المجتمع: هناك الكثير من الناس (العديد منها سيكون أذكى و / أو أكثر خبرة منك). أنا شخصياً أحب ذلك عندما يقوم شخص آخر بعملي ، غالباً على نطاق أوسع مما كنت سأحصل عليه.


9
2018-05-01 22:32





لقد أنشأت إطار عمل أتمتة خادم يستند إلى برنامج نصي: https://github.com/myplaceonline/posixcube

أنا متأكد من أنني لست أول من يصنع هذا النوع من المشاريع ، لكني لم أجد شيئًا مثله ليتناسب مع احتياجاتي ، لذلك أعتقد أن الآخرين قد يجدون هذا مفيدًا. لم يكن لدي سوى تجربة مع الشيف ، ولكن عندما بدأت أبحث في Ansible وآخرين ، أردت أن أعطي مخطوطات shell ، وأحب النتيجة حتى الآن.


1
2017-12-25 01:15