Terraform Infrastructure as Code · درس

الكتل الديناميكية للإعدادات المتداخلة

ولّدوا كتل إعداد متداخلة متكررة برمجيًا باستخدام الكتل الديناميكية، وتخلّصوا من النسخ واللصق في أمور مثل قواعد مجموعات الأمان.

الدرس 4 من 413 خطوة

الكتل الديناميكية للإعدادات المتداخلة درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Terraform Infrastructure as Code، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

مشكلة التكرار

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

ابدأ بالكتل الثابتة

إليك الإصدار اليدوي: ثلاث كتل ingress متطابقة تقريبًا. تخيل صيانة اثنتي عشرة كتلة من هذا النوع.

resource "aws_security_group" "web" {
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

بنية الكتلة الديناميكية

تحتوي كتلة dynamic على تسمية تطابق اسم الكتلة المتداخلة، ومجموعة for_each، وكتلة content تصف كل مثيل يتم إنشاؤه.

dynamic "ingress" {
  for_each = var.rules
  content {
    from_port   = ingress.value.port
    to_port     = ingress.value.port
    protocol    = "tcp"
    cidr_blocks = ingress.value.cidrs
  }
}

كائن المكرر

داخل content، يمكنك الرجوع إلى العنصر الحالي عبر كائن يحمل اسم تسمية الكتلة. ويعرض هذا الكائن .value (العنصر) و.key (مفتاح الخريطة أو فهرس القائمة).

تعريف متغير الإدخال

شغّل الكتلة الديناميكية باستخدام متغير محدد النوع. وتحافظ قائمة الكائنات على توثيق كل قاعدة ذاتيًا.

variable "rules" {
  type = list(object({
    port  = number
    cidrs = list(string)
  }))
}

تجميع العناصر

بهذا تظل بنية المورد موجزة مهما زاد عدد القواعد التي تمررها.

resource "aws_security_group" "web" {
  name = "web-sg"
  dynamic "ingress" {
    for_each = var.rules
    content {
      from_port   = ingress.value.port
      to_port     = ingress.value.port
      protocol    = "tcp"
      cidr_blocks = ingress.value.cidrs
    }
  }
}

إعادة تسمية المكرر

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

dynamic "ingress" {
  for_each = var.rules
  iterator = rule
  content {
    from_port = rule.value.port
    to_port   = rule.value.port
  }
}

تخطي الكتل بشكل شرطي

مرر مجموعة فارغة لإنشاء صفر من الكتل. ويجعل التعبير الثلاثي في for_each الكتلة اختيارية.

dynamic "logging" {
  for_each = var.enable_logging ? [1] : []
  content {
    target_bucket = var.log_bucket
  }
}

الكتل الديناميكية المتداخلة

يمكن تداخل الكتل الديناميكية. استخدم مكررات مختلفة حتى تتمكن الكتلة الداخلية من الرجوع إلى كلا المستويين دون غموض.

dynamic "setting" {
  for_each = var.settings
  iterator = s
  content {
    namespace = s.value.namespace
    name      = s.value.name
    value     = s.value.value
  }
}

متى لا تستخدم الكتل الديناميكية

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

فحص النتيجة

شغّل خطة للتأكد من أن الكتل المُنشأة تطابق التوقعات. يوسّع Terraform كل عنصر في المجموعة إلى كتلة متداخلة ملموسة.

terraform plan

اختبار سريع

اختبر معرفتك بالكتل الديناميكية.

مراجعة: إعدادات متداخلة وفق مبدأ DRY

تتيح لك الكتل الديناميكية إنشاء إعدادات متداخلة انطلاقًا من البيانات:

  • تتحكم for_each في التكرار، بينما تحدد content كل كتلة.
  • يعرض المكرر .value و.key.
  • تجعل المجموعات الفارغة الكتل اختيارية.
  • استخدمها باعتدال للحفاظ على قابلية قراءة الإعدادات.
البدء مجانًا

تعلم Terraform Infrastructure as Code مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
12
الدروس
48

الأسئلة الشائعة

هل درس «الكتل الديناميكية للإعدادات المتداخلة» مجاني؟

نعم — نص درس «الكتل الديناميكية للإعدادات المتداخلة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.

ماذا ستتعلم في «الكتل الديناميكية للإعدادات المتداخلة»؟

ولّدوا كتل إعداد متداخلة متكررة برمجيًا باستخدام الكتل الديناميكية، وتخلّصوا من النسخ واللصق في أمور مثل قواعد مجموعات الأمان. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟

لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الكتل الديناميكية للإعدادات المتداخلة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟

نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. استخدام الحلقات مع `for_each` و`count`
  2. الدوال المضمّنة في Terraform
  3. التعبيرات الشرطية وتعبيرات Splat
  4. الكتل الديناميكية للإعدادات المتداخلة
← العودة إلى Terraform Infrastructure as Code