الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

وهذا نص الخطاب ديفوبسكونف 2019-10-01 и سبلوج 2019-09-25.

هذه هي قصة مشروع يستخدم نظام إدارة التكوين المكتوب ذاتيًا، ولماذا استغرق الانتقال إلى Ansible 18 شهرًا.

رقم اليوم -ههههه: قبل البداية

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

في البداية، كانت البنية التحتية تتألف من العديد من المضيفين المنفصلين الذين يقومون بتشغيل Hyper-V. يتطلب إنشاء جهاز افتراضي العديد من الخطوات: وضع الأقراص في المكان الصحيح، وتسجيل DNS، وحجز DHCP، ووضع تكوين VM في مستودع git. كانت هذه العملية آلية جزئيًا، ولكن على سبيل المثال، تم توزيع الأجهزة الافتراضية بين المضيفين يدويًا. ولكن، على سبيل المثال، يمكن للمطورين تصحيح تكوين VM في git وتطبيقه عن طريق إعادة تشغيل VM.

حل إدارة التكوين المخصص

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

أعتقد أن الفكرة الأصلية قد تم تصميمها على أنها IaC: العديد من الأجهزة الافتراضية عديمة الجنسية التي تعيد ضبط حالتها إلى الصفر عند إعادة التشغيل. ما هي إدارة تكوين VM؟ من الناحية التخطيطية تبدو بسيطة:

  1. تم تثبيت جهاز MAC ثابت لجهاز VM.
  2. تم توصيل ISO مع CoreOS وقرص تمهيد بالجهاز الظاهري.
  3. يقوم CoreOS بتشغيل البرنامج النصي للتخصيص عن طريق تنزيله من خادم الويب بناءً على عنوان IP الخاص به.
  4. يقوم البرنامج النصي بتنزيل تكوين VM عبر SCP بناءً على عنوان IP.
  5. يتم إطلاق قطعة قدم ملفات وحدة systemd وقمة قدم البرامج النصية bash.

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

كان لهذا الحل العديد من المشاكل الواضحة:

  1. لقد تم إهمال CoreOS ISO.
  2. الكثير من الإجراءات الآلية المعقدة والسحر عند ترحيل/إنشاء الأجهزة الافتراضية.
  3. صعوبة التحديث وعند الحاجة إلى إصدار معين من البرنامج. المزيد من المتعة مع وحدات kernel.
  4. لم يتم الحصول على الأجهزة الافتراضية بدون بيانات، أي. ظهرت الأجهزة الافتراضية مع قرص يحتوي على بيانات مستخدم إضافية.
  5. كان شخص ما يفسد باستمرار تبعيات وحدة systemd وسيتجمد CoreOS عند إعادة التشغيل. كان من الصعب اكتشاف ذلك باستخدام الأدوات المتاحة في CoreOS.
  6. إدارة الأسرار.
  7. لم يكن هناك سم. كانت هناك تكوينات bash وYML لنظام التشغيل CoreOS.

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

اليوم رقم 0: التعرف على المشكلة

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

لقد كانت البنية التحتية للتطوير المعتادة: جينكينز، وبيئات الاختبار، والمراقبة، والتسجيل. تم تصميم CoreOS لاستضافة مجموعات k8s، أي. كانت المشكلة هي كيفية استخدام CoreOS. كانت الخطوة الأولى هي اختيار المكدس. استقرينا على:

  1. CentOS كتوزيع أساسي، لأن هذا هو التوزيع الأقرب إلى بيئات الإنتاج.
  2. Ansible لإدارة التكوين، لأن كان هناك فحص واسع النطاق عليه.
  3. جنكينز كإطار لأتمتة العمليات الحالية، لأن لقد تم استخدامه بالفعل بنشاط في عمليات التطوير
  4. فرط-V كمنصة افتراضية. هناك عدد من الأسباب التي تتجاوز نطاق القصة، ولكن باختصار - لا يمكننا استخدام السحب، يجب أن نستخدم أجهزتنا الخاصة.

اليوم رقم 30: إصلاح الاتفاقيات القائمة - الاتفاقيات كرمز

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

عندما أصبحت الكومة نظيفة، بدأت الاستعدادات للتحرك. إصلاح الاتفاقيات القائمة في شكل رمز (الاتفاقيات كرمز!). انتقال أعمال يدوية -> الميكنة -> أتمتة.

1. تكوين الأجهزة الافتراضية

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

Ansible يقوم بعمل عظيم في هذا. مع الحد الأدنى من حركات الجسم، يمكنك التحكم في تكوينات VM:

  1. إنشاء مستودع جيت.
  2. نضع قائمة الأجهزة الافتراضية في المخزون، والتكوينات في كتب اللعب والأدوار.
  3. نحن نقوم بإعداد خادم جنكينز خاص يمكنك من خلاله تشغيل Ansible.
  4. نقوم بإنشاء وظيفة وتكوين جينكينز.

العملية الأولى جاهزة. الاتفاقيات ثابتة.

2. إنشاء جهاز افتراضي جديد

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

كل شيء هنا لم يكن مريحًا للغاية. ليس من الملائم جدًا إنشاء أجهزة افتراضية على Hyper-V من Linux. إحدى المحاولات لميكنة هذه العملية كانت:

  1. يتصل Ansbile عبر WinRM بمضيف Windows.
  2. يقوم Ansible بتشغيل برنامج Powershell النصي.
  3. يقوم البرنامج النصي Powershell بإنشاء جهاز افتراضي جديد.
  4. باستخدام Hyper-V/ScVMM، عند إنشاء جهاز افتراضي في نظام التشغيل الضيف، يتم تكوين اسم المضيف.
  5. عند تحديث عقد إيجار DHCP، يرسل الجهاز الظاهري اسم المضيف الخاص به.
  6. يعمل تكامل ddns & dhcp القياسي على جانب وحدة تحكم المجال على تكوين سجل DNS.
  7. يمكنك إضافة جهاز افتراضي إلى مخزونك وتكوينه باستخدام Ansible.

3. إنشاء قالب VM

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

لم يخترعوا شيئًا هنا - لقد أخذوا باكرًا.

  1. أضف أداة التعبئة وبدء التكوين إلى مستودع git.
  2. إعداد عبد جنكينز خاص مع Hyper-v و Packer.
  3. نقوم بإنشاء وظيفة وتكوين جينكينز.

كيفية عمل هذا الرابط:

  1. يقوم Packer بإنشاء جهاز افتراضي فارغ ويلتقط ISO.
  2. عند تشغيل VM، يقوم Packer بإدخال الأمر في أداة تحميل التشغيل لاستخدام ملف التشغيل الخاص بنا من قرص مرن أو http.
  3. تم إطلاق Anaconda باستخدام التكوين الخاص بنا، وتم الانتهاء من التكوين الأولي لنظام التشغيل.
  4. ينتظر Packer حتى يصبح الجهاز الظاهري متاحًا.
  5. يعمل جهاز التعبئة الموجود داخل الجهاز الظاهري بشكل غير ممكن في الوضع المحلي.
  6. يستخدم Ansible نفس الأدوار التي استخدمها في الخطوة رقم 1.
  7. يقوم Packer بتصدير قالب VM.

اليوم رقم 75: إعادة صياغة الاتفاقية دون خرق = اختبار غير مقبول + اختبار المطبخ

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

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

اليوم رقم 130: ربما ليس هناك حاجة إلى CentOS+ansible؟ ربما مفتوح؟

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

اليوم رقم 170: Openshift غير مناسب، فلنغتنم الفرصة مع Windows Azure Pack؟

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

Hyper-V ليس ودودًا للغاية، وSCVMM لا يجعله أفضل بكثير. ولكن هناك شيء مثل Windows Azure Pack، وهو عبارة عن وظيفة إضافية لـ SCVMM ويحاكي Azure. لكن في الواقع، يبدو المنتج مهجورًا: فالوثائق بها روابط مقطوعة ومتناثرة جدًا. ولكن كجزء من دراسة الخيارات لتبسيط حياة سحابتنا، فقد نظروا إليها أيضًا.

اليوم رقم 250: حزمة Windows Azure ليست جيدة جدًا. نبقى على SCVMM

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

بدا Windows Azure Pack واعدًا، ولكن تقرر عدم إدخال WAP بتعقيداته في النظام من أجل الميزات غير الضرورية والبقاء مع SCVMM.

اليوم رقم 360: أكل الفيل قطعة قطعة

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

وبعد عام واحد فقط، أصبحت منصة الانتقال جاهزة وبدأت عملية الانتقال. ولهذا الغرض، تم تعيين مهمة SMART. قمنا بفحص جميع الأجهزة الافتراضية وبدأنا في اكتشاف التكوين واحدًا تلو الآخر، ووصفه في Ansible، وقمنا بتغطيته بالاختبارات.

اليوم رقم 450: ما نوع النظام الذي حصلت عليه؟

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

العملية نفسها ليست مثيرة للاهتمام. إنه أمر روتيني، ويمكن ملاحظة أن معظم التكوينات كانت بسيطة نسبيًا أو متماثلة ووفقًا لمبدأ باريتو، فإن 80% من تكوينات الأجهزة الافتراضية تتطلب 20% من الوقت. وبنفس المبدأ، تم قضاء 80% من الوقت في التحضير للحركة و20% فقط للحركة نفسها.

اليوم رقم 540: النهائي

الحل: ترحيل 120 تكوين VM من CoreOS إلى CentOS في 18 شهرًا

ماذا حدث خلال 18 شهرا؟

  1. أصبحت الاتفاقيات رمزا.
  2. أعمال يدوية -> الميكنة -> الأتمتة.

المصدر: www.habr.com

إضافة تعليق