0Pricing
DevOps Bootcamp · درس

الحلقات المتداخلة باستخدام subelements

كرّر على القوائم الموجودة داخل قوائم

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

قوائم داخل قوائم

أحيانًا يمتلك كل عنصر قائمته الخاصة: مستخدم لديه عدة مفاتيح SSH، أو مجموعة تضم أعضاء كثيرين. هذه بنية متداخلة. 🪆

Lookup ‏subelements

يجمع lookup‏ subelements كل عنصر أب مع كل عنصر ابن في قائمته الداخلية، فيحوّل البنية المتداخلة إلى تكرارات منفردة.

loop: "{{ users | subelements('keys') }}"

وسيطان

تأخذ subelements قائمة الآباء واسم المفتاح الداخلي المراد توسيعه. وتنتج تكرارًا واحدًا لكل عنصر ابن.

vars:
  users:
    - name: alice
      keys:
        - keyA
        - keyB

يتحول item إلى زوج

مع subelements، يصبح item قائمة من جزأين: item.0 هو قاموس الأب، وitem.1 هو قيمة الابن الحالية.

- ansible.builtin.debug:
    msg: "{{ item.0.name }} has {{ item.1 }}"
  loop: "{{ users | subelements('keys') }}"

السماح بعدة مفاتيح SSH

هذه هي الحالة النموذجية: منح كل مستخدم جميع مفاتيح SSH الخاصة به. يمثّل item.0.name المستخدم، بينما يمثّل item.1 مفتاحًا واحدًا في كل تكرار.

- ansible.posix.authorized_key:
    user: "{{ item.0.name }}"
    key: "{{ item.1 }}"
  loop: "{{ users | subelements('keys') }}"

يمكن أن يكون الابن قاموسًا

قد تكون العناصر الداخلية قواميس أيضًا. عندها يحتوي item.1 على حقوله الخاصة، مثل item.1.path أو item.1.mode.

عدّ التكرارات

ثلاثة مستخدمين لكل منهم مفتاحان تعني ستة تكرارات. يضرب subelements عدد الآباء في عدد أبنائهم تلقائيًا.

تخطّي القوائم الداخلية المفقودة

إذا كان من المحتمل ألا يمتلك أحد الآباء المفتاح الداخلي، فأضف skip_missing لكي يتجاهله subelements بهدوء بدلًا من التسبب في فشل.

loop: "{{ users | subelements('keys', skip_missing=true) }}"

لماذا لا نستخدم loopين؟

لا يمكن للمهمة تداخل كلمتي loop مباشرةً. ويُعد subelements الطريقة النظيفة والمدعومة للتنقل في بنية الأب والابن ضمن مهمة واحدة.

الوضوح أفضل من الحيل

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

لا تزال خاصية idempotency محفوظة

كل زوج هو استدعاء مستقل للوحدة، لذلك تؤدي إضافة مفتاح موجود مسبقًا إلى الإبلاغ عن ok. لا يغيّر التداخل شيئًا في أمان إعادة التشغيل.

تحقّق سريع

عند استخدام subelements، إلى ماذا يشير item.0؟

مراجعة: الحلقات المتداخلة

حوّلت بيانات الأب والابن إلى بنية مسطحة باستخدام subelements، واستخدمت item.0 وitem.1، وتعاملت بأمان مع القوائم المفقودة. التالي: loop_control. 🎉

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

هل درس «الحلقات المتداخلة باستخدام subelements» مجاني؟

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

ماذا ستتعلم في «الحلقات المتداخلة باستخدام subelements»؟

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

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

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

كم من الوقت يستغرق درس «الحلقات المتداخلة باستخدام subelements»؟

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

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

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

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

  1. الكلمة المفتاحية loop على قائمة
  2. التكرار على القواميس
  3. الحلقات المتداخلة باستخدام subelements
  4. loop_control: التسمية والفهرس والتوقّف المؤقت
← العودة إلى DevOps Bootcamp