تقليم الخيوط: الهجرة من Puppet Enterprise إلى برج Ansible. الجزء 2

خفضت خدمة معلومات الأقمار الصناعية البيئية الوطنية (NESDIS) تكاليف إدارة تكوين Red Hat Enterprise Linux (RHEL) بنسبة 35٪ من خلال الانتقال من Puppet Enterprise إلى Ansible Tower. في هذا الفيديو الخاص بفئة "كيف فعلنا ذلك" ، يثبت مهندس النظام مايكل راو تنفيذ هذا الترحيل ، ويشارك النصائح المفيدة والخبرة المكتسبة نتيجة للانتقال من SCM إلى آخر.

ستتعلم من هذا الفيديو:

  • كيفية تبرير إدارة جدوى الانتقال من Puppet Enterprise إلى Ansible Tower ؛
  • ما الاستراتيجيات التي ستستخدم للانتقال الأكثر سلاسة ؛
  • نصائح لتحويل ترميزات PE في Ansible Playbook ؛
  • أفضل الممارسات لتثبيت برج Ansible.



تقليم الخيوط: الهجرة من Puppet Enterprise إلى برج Ansible. الجزء 1



لدي علامات للنشر الأولي تعمل جميعها. لدي علامات تتحقق من التغييرات في 20٪ من البنية التحتية التي تحدث في 80٪ من وقت العمل. موقف مماثل مع الأدوار. يوجد رمز صيانة واحد ، ورمز ثانٍ ينظم النشر ، وثالث يقوم بتشغيل المعدات ، على سبيل المثال ، مرة واحدة يوميًا. يتحقق الدور من التغييرات التي سيتم نشرها على جميع المعدات ، ويتم إجراء الفحوصات كل ساعتين للمعدات الخاضعة للتغيير. ينطبق هذا على جدار الحماية وبعض الأشياء الإدارية وما شابه ذلك.

استخدم العادات الجيدة التي اكتسبتها عند كتابة كود لـ Puppet ، لأنها ستكون في متناول يد Ansible. على سبيل المثال ، شيء مثل idempotency هو خاصية كائن أو عملية عند تطبيق العملية مرة أخرى على الكائن لإعطاء نفس النتيجة مثل الأولى. في حالتنا ، هذا يعني أنه عند تشغيل البرنامج النصي نفسه مرة أخرى ، لا شيء يتغير ، ويخبرك النظام أنه لم يتغير شيء. إذا تم تنفيذ التغييرات ، فهذا يعني أن هناك خطأ ما في التعليمات البرمجية الخاصة بك. أي أن idempotency سيساعدك على اكتشاف الخطأ الذي يحدث عند بدء العمليات الروتينية نفسها.
استخدم الحقائق والأنماط وتجنب البيانات المشفرة. يتيح لك Ansible القيام بذلك باستخدام البرامج النصية ، والتلاعب بمرونة في مجموعة البيانات والتقاط التغييرات بسرعة. لا يوجد شيء من هذا القبيل في Puppet ، يجب عليك وضع جميع البيانات المهمة داخل شفرة المصدر. لذلك ، استخدم الأدوار ، وهذا سيسهل مهمتك إلى حد كبير.

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



يجب عليك الاستفادة من الحريات الجديدة التي توفرها Ansible. يمكنك التأثير على نفس الملف عدة مرات إذا لزم الأمر. على سبيل المثال ، إذا كنت بحاجة إلى تغيير العديد من المعلمات لملف sshd_config في برنامج نصي واحد يحتوي على معلمات مهمة لنصوص أخرى ، فيمكنك القيام بذلك. دمية لا تسمح بذلك.
مع Ansible ، يمكنك الحصول على تنفيذ برنامج يمكن التنبؤ به. تعمل تمامًا كما تتوقع منها ، ولا تحتاج إلى مراقبة أخطاء تنفيذ التعليمات البرمجية. إذا كنت تعمل مع EXEC ، فكن على دراية بأن معالجات Ansible أكثر ذكاءً من معالجات الدمى. استخدم حيل Ansible مثل ميزة التفويض المفضلة لدي. على سبيل المثال ، لقد بدأت كتاب تشغيل للخادم A ، ولكن يجب تنفيذ جزء من الخطوات الواردة في هذا البرنامج النصي بشكل مستقل على الخادم B. لقد استخدمت وظيفة التفويض للانتقال من الدمى إلى Ansible. باستخدام هذه الوظيفة ، يمكنك تكوين تنفيذ المهمة على مضيف مختلف ، وليس على ذلك الذي تم تكوينه باستخدام مفتاح تفويض. ستستمر تنفيذ الوحدة مرة واحدة لكل جهاز ، ولكن بدلاً من العمل على الجهاز المستهدف ، ستعمل على مضيف مفوض ،علاوة على ذلك ، سيتم تطبيق جميع الحقائق المتاحة على المضيف الحالي. سيؤدي ذلك إلى تقليل كمية إعدادات النظام اليدوية بشكل كبير.

يمكن استخدام بيانات مكتبة Puppet Hiera الخاصة بك كحقائق Ansible ، وهي معلومات حول العقد المتصلة. الحقائق - هذا ما تجمعه وحدة الحقائق المجمعة أثناء التنفيذ: مساحة القرص وإصدار ونوع نظام التشغيل واسم المضيف والذاكرة المتاحة وبنية المعالج وعناوين IP وواجهات الشبكة وحالتها. لا أقصد معلومات الخدمة المخفية في عمق البيانات - فقط استخدم البرامج النصية لمعداتك لتشكيل مجموعات وعقد متغيرة. يخبر البرنامج النصي للجهاز النظام بالمواقع الفعلية التي يحتوي عليها. في وقت لاحق ، استخدم الأدوار ، على سبيل المثال ، يحتوي أحد الأدوار على حقائق البنية التحتية لكل موقع مادي ، مثل موارد NTP وخوادم DNS وعناوين IP للمعدات النمطية وماسحات Nessus وما شابه ذلك.اجمع المتغيرات الشائعة في دور واحد إذا قمت بوضعها في أكثر من مكان ووضعها على المضيف كملف /etc/ansible/facts.d/.

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



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

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

قم بتثبيت حساب برج قياسي لـ SSH على المضيفين. أستخدم الوصول عن بعد ، لذلك أستخدم الحساب القياسي وبرنامج إدارة نظام SUDO لتعيين الامتيازات. بالطبع ، يحتوي Tower على كلمة مرور ، لذلك لا تخاطر بالأمان باستخدام كلمة مرور SUDO.

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

الآن بعد أن قمت بنشر مستودع Git ، قم بتثبيت وتكوين قوالب العمل لكتب التشغيل. اختبر أداء كل شيء تفعله مع البرج. بعد التحقق من أن النصوص البرمجية الخاصة بك مرتبة بشكل مثالي ، يمكنك متابعة ترحيل المضيف. استخدم Ansible لإزالة وكيل Puppet و "تنظيف" العقدة من خادم Puppet باستخدام برنامج نصي خاص. أنها بسيطة جدا.



أنشأت مجموعة تسمى Tower وأضفتها إلى النص البرمجي Ansible وأرسلتها إلى جميع المضيفين. بعد ذلك ، أوقف كتاب التشغيل هذا خدمات Puppet ، وألغى تثبيت جميع حزم Puppet Enterprise ، ومسح الدلائل. قام أيضًا بحذف مستخدمي Puppet - نظرًا لأننا نحذف PE ، ثم نحذف مستخدمي PE أيضًا.

نرى وظيفة التفويض في العمل. الآن يمكنني الذهاب إلى Puppet Master واستخدام الأوامر 2-3 لمسح التسجيل ، ثم أخذ لقطة شاشة توضح أنه تم حذف SCM هذا. سيكون بمثابة دليل وثائقي على أننا لم نعد نستخدم PE.

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



إذا قمنا بتغيير البوابة الافتراضية أو خادم NTP ، فستنعكس هذه التغييرات على الفور في جميع عناصر البنية التحتية.

تجنب استخدام الأدوار والنصوص الضخمة والكبيرة. تعد السيناريوهات والأدوار القصيرة لمهام محددة أكثر كفاءة وموثوقية وأسهل في الإدارة وأسهل في التعقب.

انتبه إلى شيء آخر - عند تشغيل Tower والذهاب إلى صفحته ، سترى عرضًا للعديد من المعلمات باللون الأحمر. هذا اللون هو إنذار ، ولكن هذا هو الشيء. تبدأ العملية على مئات من المضيفين ، وإذا نجح 99 منهم ، ولم ينجح أحد منهم ، فسيبلغ برج عن فشل العملية. سيضع علامة حمراء زاهية على الشاشة لتوضيح هذا العمل. لا داعي للذعر ، ولكن حاول معرفة سبب عدم عمل هذه العقدة المفردة. عندما تنظر إلى شاشة Puppet Master وترى 99 ضوءًا أخضر وأخرى حمراء ، تعتقد أن كل شيء على ما يرام ، فإن النظام يعمل بشكل جيد. البرج أكثر صرامة ، ولكنه أقل إفادة حول رسائل الخطأ. ربما في الإصدارات المستقبلية من Ansible سيتم القضاء على هذا النقص ، ولكن في الوقت الحالي فقط حاول معرفة سبب الإنذار ، وتذكرأن مثل هذا الإنذار لا يمكن أن يحمل أي شيء بالغ الأهمية في حد ذاته - بهذه الطريقة فقط يقوم النظام بالإبلاغ عن فشل واحد على مضيف واحد.

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

هناك طريقة جيدة لاستخدام برج API. عندما يتم تشغيل الكمبيوتر المحمول كجزء من إجراء تمهيد النظام القياسي ، فإنه يستخدم واجهة برمجة التطبيقات لإخبار البرج: "مرحبًا ، أنا هنا ، هل هناك أي عمل لي؟" ، وبعد ذلك يتحقق البرج من مهام هذا الجهاز المحدد الآن ، لأن تعرف أنها على الإنترنت.

الشيء الآخر الذي واجهتنا مشاكل في البداية كان تنفيذ العمليات المتوازية. بشكل افتراضي ، يستخدم Ansible 5 مضيفين متوازيين للقيام بعمل واحد. لذلك ، يستغرق إطلاق نفس العمل المجدول لـ 100 جهاز ما يصل إلى 20 دقيقة لكل مضيف من خلال التحقق من معلمات التكوين الرئيسي. وبالتالي ، نبدأ أولاً في التهيئة على 5 مضيفين ، ثم 5 مضيفين آخرين ، 5 آخرين وهكذا. في البداية ، جعلنا هذا الوضع في حالة عصبية شديدة ، لأن نشر النظام على 50 مضيفًا حدث في غضون ساعتين. الحل لهذه المشكلة على النحو التالي.
ما عليك سوى تعيين عدد المضيفين المتوازيين على خادم Ansible Tower ليكون مختلفًا عن 5. نظرًا لأن لدي 150 مضيفًا يعمل في نفس الوقت ، قمت بتعيين هذه القيمة على 25. بعد ذلك ، تم تثبيت 6 تصحيحات ، على سبيل المثال ، بسرعة كبيرة. إذا كنت ترغب في ذلك ، يمكنك تعيين هذه المعلمة على 50 - كل هذا يتوقف على قوة الحوسبة ومقدار ذاكرة الوصول العشوائي لديك. بهذه الطريقة ، يتيح لك Tower تخصيص تنفيذ العمليات المتوازية لتناسب احتياجاتك.



إذا كان لديك أي أسئلة حول موضوع التقرير ، فلا تتردد في الاتصال بجهات الاتصال المشار إليها. ترى عنوان البريد الإلكتروني حيث يمكنك إرسال بريد إلكتروني يصف المشكلة التي حدثت عند التبديل من Puppet إلى Ansible ، وسأحاول الرد عليك في أقرب وقت ممكن. أشكركم على مشاركتكم وأتمنى لكم هجرة ناجحة!

القليل من الدعاية :)


أشكركم على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية لأصدقائك ، VPS السحابي للمطورين من $ 4.99 ، وهو نظير فريد من نوعه لخوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة حول VPS (KVM) E5-2697 v3 (6 نوى) 10GB DDR4 480GB SSD 1Gbps من $ 19 أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا و 40 جيجابايت DDR4).

Dell R730xd أرخص مرتين في مركز بيانات Equinix Tier IV في أمستردام؟ فقط لدينا 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV من 199 دولارًا في هولندا!Dell R420 - 2x E5-2430 2.2 جيجا هرتز 6C 128 جيجا بايت DDR3 2x960GB SSD 1Gbps 100TB - من 99 دولار! اقرأ عن كيفية بناء مبنى البنية التحتية الفئة c باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟

All Articles