كيفية السيطرة على البنية التحتية للشبكة الخاصة بك. الفصل الرابع التنفيذ. قوالب

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

ترك بعض المواضيع وراء ، قررت أن أبدأ فصل جديد.

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

DevOps للويب


إنشاء تكوين باستخدام برنامج نصي ، باستخدام GIT للتحكم في التغييرات في البنية التحتية لتكنولوجيا المعلومات ، "التحميل" عن بُعد - تأتي هذه الأفكار أولاً عند التفكير في التنفيذ التقني لنهج DevOps. الإيجابيات واضحة. ولكن هناك ، للأسف ، عيوب أيضا.

عندما مضى أكثر من 5 سنوات ، جاء مطورونا إلينا ، إلى مسئولي الشبكات ، مع هذه العروض ، لم نكن متحمسين.

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

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

أو ، كيف نفهم أن أوامر التكوين تم تطبيقها بشكل صحيح وماذا تفعل في حالة وجود خطأ؟

لا أريد أن أقول إن كل هذه القضايا غير قابلة للحل. ما عليك سوى قول "A" ، ربما يكون من الحكمة أن نقول "B" ، وإذا كنت تريد استخدام نفس العمليات للتحكم في التغيير كما هو الحال في التطوير ، فأنت بحاجة إلى وجود بيئات للتطوير والتنظيم بالإضافة إلى الإنتاج. ثم يبدو هذا النهج كاملاً. ولكن كم سيكلف؟

ولكن هناك حالة واحدة حيث يتم تكافؤ تقريبا سلبيات ، وتبقى الايجابيات فقط. أنا أتحدث عن أعمال التصميم.

مشروع


على مدار العامين الماضيين ، شاركت في مشروع لبناء مركز بيانات لمزود رئيسي واحد. أنا مسؤول عن F5 و Palo Alto في هذا المشروع. من وجهة نظر شركة سيسكو فهي "معدات الطرف الثالث".

بالنسبة لي شخصيا ، هناك مرحلتان متميزتان في هذا المشروع.

المرحلة الاولى


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

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

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

الآن كان من الممكن أن ننظر حولنا قليلا.
وكانت تلك بداية المرحلة الثانية.

المرحلة الثانية


قررت لأتمتة العملية.

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

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

لذلك ، عند استخدام YAML و Jinja2 ، ملف YAML مع معلمات التكوين ، مثل عناوين IP ، وأرقام BGP AS ، ... يفي تمامًا بدور NIP ، بينما تشتمل قوالب Jinja2 على بناء جملة مناسب للتصميم ، وهذا في الواقع ، انعكاس لـ LLD.

استغرق الأمر يومين لتعلم اللغات YAML و Jinja2. بعض الأمثلة الجيدة تكفي لفهم كيف يعمل هذا. ثم استغرق الأمر حوالي أسبوعين لإنشاء جميع القوالب التي تناسب تصميمنا: أسبوع لـ Palo Alto وأسبوع آخر لـ F5. تم نشر كل هذا على جيثاب للشركات.

الآن كانت عملية التغيير على النحو التالي:

  • تغيير ملف yaml
  • إنشاء ملف تكوين باستخدام قالب (Jinja2)
  • حفظها إلى مستودع بعيد
  • تم تحميل التكوين الذي تم إنشاؤه على الجهاز
  • رأيت خطأ
  • تم تغيير ملف YAML أو قالب Jinja2
  • إنشاء ملف تكوين باستخدام قالب (Jinja2)
  • ...

من الواضح أنه في البداية تم إنفاق الكثير من الوقت على التحرير ، ولكن بعد أسبوع أو أسبوعين كان من النادر حدوثه بالفعل.

كان الاختبار الجيد والقدرة على تصحيح كل شيء رغبة العميل في تغيير اصطلاح التسمية. الذين عملوا مع F5 يفهم طغيان الوضع. لكن بالنسبة لي كان الأمر بسيطًا جدًا. لقد غيرت الأسماء الموجودة في ملف YAML ، وحذفت التكوين بالكامل من الجهاز ، وقمت بإنشاء اسم جديد وتحميله. كل شيء ، مع مراعاة إصلاحات الأخطاء ، استغرق 4 أيام: يومين لكل تقنية. بعد ذلك ، كنت مستعدًا للخطوة التالية ، وهي إنشاء مراكز بيانات DEV و Staging.

ديف والتدريج


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

لتلخيص


إذن ماذا لدي في الخلاصة؟

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

كل هذا أدى إلى حقيقة أن

  • انخفضت نسبة الأخطاء إلى 0 تقريبًا
  • استغرق الأمر 90 في المئة من الروتين
  • زادت سرعة التنفيذ بشكل كبير

الدفع ، F5Y ، ACY


قلت بعض الأمثلة تكفي لفهم كيف يعمل هذا.
إليك نسخة مختصرة (ومعدلة بالطبع) لما تم إنشاؤه في عملي.

PAY = نشر P alo A lto من Y aml = Palo Alto من Yaml
F5Y = نشر F5 من Y aml = F5 من Y aml (قريبًا)
ACY = النشر AC i من Y aml = F5 من Y aml

سأضيف بضع كلمات حول ACY (لا ينبغي الخلط بينه وبين ACI).

أولئك الذين عملوا مع ACI يعرفون أن هذه المعجزة (وبطريقة جيدة ، أيضًا) لم يتم إنشاؤها بواسطة الشبكات :). نسيت كل ما تعرفه عن الشبكة - لن يكون مفيدًا لك!
إنه مبالغ فيه بعض الشيء ، لكنه ينقل شعورًا بأنني دائمًا ما أعاني منه لمدة 3 سنوات ، وأنا أعمل مع ACI.

وفي هذه الحالة ، لا تعد ACY مجرد فرصة لبناء عملية التحكم في التغيير (والتي تعد مهمة بشكل خاص في حالة ACI ، لأنه من المفترض أن هذا هو الجزء المركزي والأكثر أهمية في مركز البيانات الخاص بك) ، ولكنه يوفر لك أيضًا واجهة سهلة الاستخدام لإنشاء تكوين.

يستخدم المهندسون في هذا المشروع Excel لاستخدام ACI بدلاً من YAML لنفس الغرض تمامًا. هناك بعض المزايا لاستخدام Excel ، بالطبع:

  • ارتشف في ملف واحد
  • علامات جميلة أن العميل مسرور للنظر
  • يمكنك استخدام بعض أدوات التفوق

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

تقوم ACY بالفعل بتطبيق نفس الأساليب التي استخدمتها للطرف الثالث لتكوين ACI.

Source: https://habr.com/ru/post/ar453920/


All Articles