كيفية التحكم في البنية التحتية لشبكتك. الفصل الرابع. أتمتة. قوالب

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

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

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

DevOps للشبكة

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

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

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

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

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

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

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

مشروع

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

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

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

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

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

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

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

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

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

ما فهمته من تواصلي مع المطورين في ذلك الوقت (ويجب أن نشيد، كان لدينا فريق قوي) هو أن تنسيق النص، على الرغم من أنه يبدو للوهلة الأولى وكأنه شيء من عالم نظام التشغيل 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.

التطوير والتدريج

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

تلخيص

إذن، ماذا لدي في النتيجة النهائية؟

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

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

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

الدفع، F5Y، ACY

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

PAY = النشر Pمنظمة العمل العربية Aحتى من Yأمل = بالو ألتو من يامل
F5Y = النشر F5 تبدأ من Yمكافحة غسل الأموال = F5 تبدأ من Yأمل (قريبا)
ACY = النشر ACأنا من Yمكافحة غسل الأموال = F5 تبدأ من Yمكافحة غسل الأموال

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

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

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

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

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

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

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

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

إضافة تعليق