ما هو Terraform ولماذا يهتز

نشرت: 2024-03-12

تعد إدارة التكوين جزءًا أساسيًا من منهجية DevOps، وتقع الأدوات مثل Ansible أو Chef أو Puppet أو Terraform أو SaltStack في قلب الأنظمة البيئية لتطوير البرمجيات.
terraform

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

Terraform هي أداة تنسيق التكوين التي تعمل مع أي بيئة سحابية، سواء كانت نظامًا محليًا خاصًا أو نظامًا عامًا، وتسمح بتصميم وإدارة وتحسين البنية التحتية بشكل آمن ومريح كتعليمات برمجية. كجزء من مجموعة Hashicorp، بما في ذلك Vagrant وPacker وConsul وVault وNomad، تساعد Terraform في توفير أي تطبيق مكتوب بأي لغة لأي بنية تحتية.

فيما يلي فوائد استخدام Terraform بدلاً من Ansible أو Chef أو Puppet أو SaltStack:

  • التنسيق، وليس مجرد التكوين
  • البنية التحتية غير القابلة للتغيير
  • تصريحي، وليس رمز إجرائي
  • بنية العميل فقط

أدناه سنشرح بمزيد من التفاصيل سبب أهمية ذلك.

Terraform، أداة تنسيق الخادم

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

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

البنية التحتية غير القابلة للتغيير

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

نمط الكود التصريحي

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

بنية العميل فقط

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

عيوب التضاريس

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

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

العيب الثالث في Terraform هو أنه تم تطويره مع وضع النشر السحابي فقط في الاعتبار، في حين أن نظيراته مثل Salt وAnsible وPuppet تعمل مع الخوادم المعدنية بشكل جيد، نظرًا لأنه تم تطويرها منذ أكثر من 5 سنوات، دون اتباع نهج السحابة فقط في عقل. وهذا يجعل أداة تنسيق تكوين Terraform متخصصة حقًا وليست حلاً واحدًا يناسب الجميع.

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

فوائد التضاريس

بالإضافة إلى المزايا المذكورة أعلاه، هناك ميزتان رئيسيتان لـ Terraform عليك أن تضعهما في الاعتبار:

  • قابلية نقل فائقة — لديك أداة واحدة ولغة واحدة لوصف البنية التحتية لسحابة Google وAWS وOpenStack وأي سحابة أخرى. لم يعد تبديل المزود بمثابة صداع بعد الآن.
  • سهولة النشر الكامل للمكدس — يمكنك الحصول على مثيلات Amazon التي تقوم بتشغيل حاويات Kubernetes مع أعباء العمل الخاصة بك، وإدارة النظام بأكمله من أداة واحدة.

نحن نعتبر Terraform واحدًا من أفضل أدوات تنسيق التكوين المتاحة اليوم. قد لا تحظى بشعبية كبيرة مثل الأدوات الأخرى حتى الآن، ولكننا نعتقد اعتقادًا راسخًا أنها ستحقق جذبًا كبيرًا في السنوات القادمة. نعتقد أن مبدعي Vagrant وConsul قد أظهروا خبرتهم مرة أخرى وقدموا منتجًا رائعًا.

الاستنتاجات

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