مقدمة إلى وحدات Terraform
تعرّفوا إلى فوائد استخدام الوحدات لتغليف أنماط البنية التحتية الشائعة وإعادة استخدامها، مما يحسّن تنظيم التعليمات البرمجية وقابليتها للصيانة.
مقدمة إلى وحدات Terraform درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ما هي وحدات Terraform؟
الوحدة في Terraform هي حزمة مستقلة من إعدادات Terraform. ويمكنكم اعتبارها شبيهة بدالة أو فئة في لغات البرمجة. فهي تتيح لكم تجميع الموارد المرتبطة وإدارتها كوحدة واحدة.
تساعدكم الوحدات على تنظيم تعليمات البنية الأساسية البرمجية وجعلها أسهل في الإدارة، لا سيما في المشاريع الكبيرة.
لماذا نستخدم وحدات Terraform؟
توفر الوحدات عدة مزايا أساسية للبنية الأساسية باعتبارها تعليمات برمجية:
- إعادة الاستخدام: تعريف جزء من البنية الأساسية مرة واحدة واستخدامه عدة مرات عبر مشاريع أو بيئات مختلفة.
- التنظيم: تقسيم الإعدادات المعقدة إلى مكونات أصغر ومنطقية وسهلة الإدارة.
- الاتساق: ضمان إنشاء الموارد بطريقة موحدة في كل مرة، مما يقلل انحراف الإعدادات والأخطاء.
- التعاون: يمكن للفرق تطوير الوحدات ومشاركتها، مما يسرّع التطوير ويحافظ على المعايير.
شرح بنية الوحدة
وحدة Terraform هي في الأساس دليل يحتوي على ملف واحد أو أكثر بامتداد .tf. ورغم مرونة البنية، يتضمن الهيكل الشائع ما يلي:
main.tf: يعرّف الموارد الأساسية التي تنشئها الوحدة.variables.tf: يعلن متغيرات الإدخال التي تخصص سلوك الوحدة.outputs.tf: يعرّف قيم الإخراج التي تتيحها الوحدة للجهات التي تستدعيها.versions.tf: يحدد قيود إصدارات Terraform والموفر الخاصة بالوحدة.
تساعد هذه البنية المنظمة على إبقاء التعليمات البرمجية مرتبة وسهلة الفهم.
التعليمات البرمجية لوحدتكم الأولى
لنعرّف وحدة بسيطة جدًا تنشئ حاوية AWS S3. عادةً ما يوجد هذا الرمز في دليل خاص به، مثل modules/my_s3_bucket/main.tf.
يمكن تشغيل هذا الملف الكامل كوحدة جذر لرؤية الوحدة أثناء عملها، لكن الغرض الأساسي هنا هو عرض البنية الداخلية للوحدة.
provider "aws" {
region = "us-east-1" # Example region
}
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}
resource "aws_s3_bucket" "example_bucket" {
bucket = var.bucket_name
acl = var.acl_setting
tags = {
Environment = "Dev" # Example tag
}
}
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}مدخلات الوحدة: المتغيرات
تتيح لكم متغيرات الإدخال تخصيص سلوك وحدتكم دون تغيير تعليماتها البرمجية الأساسية. وتُعرّف في ملف variables.tf داخل دليل الوحدة.
عند استدعاء وحدة، تمررون قيمًا إلى هذه المتغيرات، مما يجعل الوحدة قابلة لإعادة الاستخدام بدرجة كبيرة في سيناريوهات وبيئات مختلفة. ويمكنكم اعتبارها بمثابة وسائط الدوال.
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}مخرجات الوحدة: إتاحة البيانات
تُستخدم قيم الإخراج لإتاحة البيانات من الوحدة لإعدادات Terraform التي تستدعيها. وهذه هي الطريقة التي يمكنكم بها الوصول إلى معلومات مهمة حول الموارد التي أنشأتها الوحدة.
تُعرّف المخرجات في ملف outputs.tf داخل دليل الوحدة، ويمكن الإشارة إليها من أجزاء أخرى من إعدادات Terraform أو حتى من وحدات أخرى.
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}استدعاء وحدتكم المخصصة
بعد أن عرّفنا وحدة my_s3_bucket، لنستدعها من إعدادات الجذر. تحدد السمة source المكان الذي يمكن لـ Terraform العثور فيه على الوحدة.
بالنسبة إلى الوحدات المحلية، يكون ذلك مسارًا نسبيًا إلى دليل الوحدة. ونمرر قيمًا إلى متغيرات إدخال الوحدة، ويمكننا الوصول إلى مخرجاتها المتاحة.
provider "aws" {
region = "us-east-1"
}
module "my_website_bucket" {
source = "./modules/my_s3_bucket" # Path to your local module
bucket_name = "my-unique-website-bucket-12345"
acl_setting = "public-read"
}
output "website_bucket_arn" {
description = "ARN of the website S3 bucket."
value = module.my_website_bucket.bucket_arn
}
output "website_bucket_id" {
description = "ID of the website S3 bucket."
value = module.my_website_bucket.bucket_id
}مصادر الوحدات المختلفة
ليست الوحدات محلية فقط! يستطيع Terraform جلب الوحدات من مصادر مختلفة، مما يمنحكم مرونة أكبر:
- المسارات المحلية:
./modules/my_module(كما في مثالنا) - Terraform Registry:
hashicorp/vpc/aws(وحدات متاحة للعامة) - مستودعات Git:
git::https://example.com/repo.git - حاويات S3:
s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip
يُعد Terraform Registry مكانًا ممتازًا للعثور على وحدات مُنشأة مسبقًا وموثوقة من المجتمع لأنماط البنية الأساسية الشائعة.
الأثر العملي للوحدات
تخيلوا إدارة مئات الموارد عبر بيئات متعددة (التطوير والاختبار والإنتاج). من دون الوحدات، ستملكون ملفات إعداد ضخمة ومتكررة.
تتيح لكم الوحدات تعريف نمط «خادم ويب» أو «قاعدة بيانات» مرة واحدة. ثم تستدعون تلك الوحدة لكل مثيل، مع تمرير متغيرات مختلفة للإعدادات الخاصة بكل بيئة. ويقلل ذلك الأخطاء بدرجة كبيرة، ويبسط التحديثات، ويجعل بنيتكم الأساسية قابلة للتوسع فعلًا.
تحقق سريع
لقد تعلمتم بنية وحدات Terraform ومزاياها. لنتحقق مما إذا كنتم قادرين على تحديد إحدى مزاياها الأساسية.
مراجعة والخطوات التالية
قدمنا في هذا الدرس وحدات Terraform بوصفها أدوات قوية لتنظيم تعليمات البنية الأساسية البرمجية وإعادة استخدامها. تعلمتم ما يلي:
- تغلف الوحدات الموارد في وحدات قابلة لإعادة الاستخدام.
- تحسن تنظيم التعليمات البرمجية والاتساق وقابلية إعادة الاستخدام.
- تستخدم الوحدات
variables.tfللمدخلات وoutputs.tfللبيانات المتاحة. - يمكنكم استدعاء الوحدات من مسارات محلية أو سجلات أو مستودعات Git.
بعد ذلك، سنتعمق في إنشاء وحداتكم القابلة لإعادة الاستخدام، ونستكشف أنماطًا متقدمة وممارسات أفضل.
الأسئلة الشائعة
هل درس «مقدمة إلى وحدات Terraform» مجاني؟
نعم — نص درس «مقدمة إلى وحدات Terraform» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.
ماذا ستتعلم في «مقدمة إلى وحدات Terraform»؟
تعرّفوا إلى فوائد استخدام الوحدات لتغليف أنماط البنية التحتية الشائعة وإعادة استخدامها، مما يحسّن تنظيم التعليمات البرمجية وقابليتها للصيانة. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟
لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «مقدمة إلى وحدات Terraform»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟
نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقدمة إلى وحدات Terraform
- إنشاء وحدات قابلة لإعادة الاستخدام
- استخدام مساحات العمل للبيئات
- نشر الوحدات في سجل