0Pricing
DevOps Bootcamp · درس

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

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

الكتل الديناميكية للإعدادات المتداخلة درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 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.
  • تجعل المجموعات الفارغة الكتل اختيارية.
  • استخدمها باعتدال للحفاظ على قابلية قراءة الإعدادات.

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

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

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

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

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

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

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

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

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

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

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

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

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