وحدات Terraform

Whdat Terraform



في عالم توفير وإدارة البنية التحتية ، برز Terraform كخيار شائع بين المطورين وفرق العمليات. من خلال بناء الجملة التعريفي (HCL - HashiCorp Configuration Language) ودعمها للعديد من مزودي البنية التحتية ، تتيح Terraform ممارسات البنية التحتية كرمز (IaC).

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







مقدمة إلى وحدات Terraform

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



يمكن إنشاء الوحدات النمطية واستخدامها داخليًا داخل مشروع أو مشاركتها عبر عدة مشاريع أو فرق.



تنظيم الوحدة

عند تنظيم وحدات Terraform النمطية ، من الشائع أن يكون لديك بنية هرمية تتكون من الوحدات النمطية الجذرية والفرعية. دعونا نستكشف كيف تعمل هذه المنظمة.





وحدة الجذر



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

تحتوي وحدة الجذر عادةً على ملف 'main.tf' حيث نحدد الموارد والتكوينات التي تشكل أساس بنيتنا التحتية. اختياريًا ، يمكن أن يكون لدينا ملفات 'variables.tf' و 'outputs.tf' معها. أيضًا ، يمكننا تحديد دليل 'الوحدات النمطية' داخل الدليل الجذر للوصول إلى الوحدات التابعة بسهولة.

وحدات الطفل

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

يمكن استخدام الوحدات الفرعية داخل الجذر أو الوحدات الفرعية الأخرى التي تسمح بالتكوين وبناء البنية التحتية المعقدة. تحتوي كل وحدة نمطية فرعية على دليلها الذي يحتوي على ملفات التكوين الضرورية مثل 'main.tf' و 'variables.tf' و 'outputs.tf'.

الآن ، دعنا نرى كيف يمكننا إنشاء وحدة Terraform.

إنشاء وحدة Terraform

عند إنشاء وحدات Terraform النمطية ، يجب علينا إنشاء دليل جديد للوحدة باستخدام ملفات تكوين Terraform المطلوبة. عادة ، يسمى هذا الدليل 'وحدات'. يعد تحديده ضمن الدليل الجذر لمشروعنا من أفضل الممارسات.

لنأخذ مثالاً سهلاً عن وحدة بسيطة لتوفير خادم ويب محلي باستخدام Docker. أولاً ، نحدد الوحدة النمطية في دليل 'الوحدات النمطية' على أنها 'main.tf'.

الموارد 'حامل_الحاوية' 'قاعدة بيانات للانترنت' {
الاسم = var.name
الصورة = var.image
الموانئ {
داخلي = var.internal_port
خارجي = var.external_port
}
}

هنا ، نقوم بإنشاء وحدة تسمى 'docker_container' تأخذ اسم الحاوية وصورة Docker والمنفذ الداخلي والمنفذ الخارجي كمتغيرات الإدخال. تغلف الوحدة المنطق لإنشاء مورد حاوية Docker وتسمح للمتصل بتخصيص خصائص الحاوية.

كما هو موضح في الصورة التالية ، نقوم بإنشاء ملف منفصل يسمى 'variables.tf' في دليل 'الوحدات النمطية' لتحديد متغيرات الإدخال التي يمكن تخصيصها عند استخدام الوحدة:

عامل 'اسم' {
الوصف = 'اسم حاوية Docker'
يكتب = سلسلة
}

عامل 'صورة' {
الوصف = 'صورة Docker'
يكتب = سلسلة
}

عامل 'ميناء_داخلية' {
الوصف = 'منفذ داخلي في حاوية Docker'
يكتب = رقم
}

عامل 'منفذ_ خارجي' {
الوصف = 'منفذ خارجي للتعيين إليه'
يكتب = رقم
}

هنا ، أعلنا عن أربعة متغيرات ، لكل منها 'وصف' و 'نوع' كسمات وقيم ذات صلة بها.

استخدام وحدة Terraform

منذ أن أنشأنا الوحدة النمطية الخاصة بنا ، يمكننا الآن استخدامها في تكوين Terraform الرئيسي لدينا من خلال الرجوع إلى مصدرها. دعونا نجعل ملف التكوين الرئيسي الخاص بنا وهو “main.tf” في الدليل الجذر.

وحدة 'webserver_container' {
مصدر = '../modules/docker_container'
الاسم = 'mywebserver'
الصورة = 'nginx: الأحدث'
Internal_port = 80
منفذ خارجي = 8080
}

نستخدم كتلة 'module' في الكود السابق لإنشاء وحدة حاوية Docker. نحن نقدم قيم الإدخال الضرورية للوحدة النمطية مثل اسم الحاوية وصورة Docker وتكوين المنفذ. تحدد المعلمة 'source' المسار النسبي إلى دليل 'module'.

بعد ذلك ، دعنا نرى كيفية استخدام مخرجات Terraform لاستخدامها مع الوحدات.

مخرجات الوحدة

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

انتاج 'معرف_الحاوية' {
الوصف = 'معرف حاوية Docker التي تم إنشاؤها'
القيمة = docker_container.webserver.id
}

هنا ، أنشأنا ملف 'outputs.tf' داخل دليل 'الوحدات النمطية'. يعرض متغير الإخراج هذا معرف حاوية Docker التي تم إنشاؤها بواسطة مورد 'docker_container' المسمى 'خادم الويب' داخل الوحدة النمطية.

الآن ، يمكننا الوصول إلى معرف الحاوية في ملف تكوين الجذر الخاص بنا. راجع الكود المحدث التالي لملف 'main.tf' في الدليل الجذر:

وحدة 'webserver_container' {
مصدر = '../modules/docker_container'
الاسم = 'mywebserver'
الصورة = 'nginx: الأحدث'
Internal_port = 80
منفذ خارجي = 8080
}

الموارد 'docker_volume' 'بيانات' {
# بقية الحجج تذهب هنا
ربط = module.webserver_container.container_id
}

باستخدام 'module.webserver_container.container_id' كقيمة لوسيطة 'bind' ، فإننا نوجه Terraform لربط وحدة تخزين Docker بالموقع المحدد بواسطة معرف الحاوية للوحدة النمطية 'web_container'. يؤدي هذا إلى إنشاء علاقة بين مورد وحدة تخزين Docker والحاوية التي تم إنشاؤها بواسطة الوحدة النمطية 'webserver_container' ، مما يضمن تثبيت وحدة التخزين في الموقع المناسب.

أفضل الممارسات لوحدات Terraform

نمطي لإعادة الاستخدام

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

تسمية واضحة ومتسقة

يؤدي استخدام اصطلاحات تسمية واضحة ومتسقة للوحدات والمتغيرات والموارد إلى تحسين قابلية القراءة وفهم قاعدة التعليمات البرمجية مما يسهل على الآخرين العمل مع الوحدات النمطية وصيانتها.

عزل التبعيات

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

التحكم في الإصدار وسجل الوحدة النمطية

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

خاتمة

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