محتويات الدورة

Ansible / الأساسي: التنفيذ والجرد والحالة النوعية / الدرس 6

استخدام الحقائق والشروط والحلقات بمدخلات نوعية

افصل الحقائق المكتشفة من الإعداد المطلوب واكتب شروطاً منطقية واحفظ نتائج العناصر ونطاقها.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح توفر الحقائق وحداثتها وكلفتها.
  • استخدام when تعبيراً بمنطق صريح.
  • تفسير الحلقات وقوائم نتائجها.

الحقائق ملاحظات بنطاق وعمر

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

ينبغي أن يقيم الشرط منطقياً

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

بيانات الحلقة قائمة بمعنى لكل عنصر

تتوقع loop قائمة وحول الخريطة صراحة. استخدم loop_var بالمتداخل لتجنب item وسم دون أسرار. يقيم الشرط بسياق العنصر ويحتوي التسجيل results لا نتيجة مفردة. احفظ هوية العنصر بالتجميع كي لا يخفي الملخص المسبب. وتفيد هوية العنصر في تفسير الملخص: إذ يمكن لحلقة واحدة أن تضم عناصر ناجحة وأخرى متجاوزة أو فاشلة، ولا يكفي علم عام لتحديد التصحيح المناسب.

yaml حلقة نوعية توضيحية وشرط عنصر
- name: Describe selected synthetic services
  hosts: lab_nodes
  gather_facts: false
  vars:
    lab_services:
      - name: report
        enabled: true
      - name: archive
        enabled: false
  tasks:
    - name: Describe an enabled service
      ansible.builtin.debug:
        msg: "Selected {{ service.name }}"
      loop: "{{ lab_services }}"
      loop_control:
        loop_var: service
        label: "{{ service.name }}"
      when: service.enabled

يستخدم منطقاً ومتغير حلقة صريحين وتحلل فقط دون مضيف أو حقائق أو مهمة.

اختبار قصد الاختيار بنموذج مصطنع محدود

يفحص مرشح صغير المخطط والمختار لا تقييم Jinja أو الغائب أو النتائج. صرح الفرق بين Python وقواعد Ansible وتحقق من النوع قبل اختيار نص غير فارغ. احفظ رفض العلم المشوه وترتيباً ثابتاً للتقرير. هذا قصد البيانات لا التنفيذ. ولهذا يفحص النموذج نوع العلم قبل الترشيح، ولا يستنتج من صدق سلسلة غير فارغة في Python أن Ansible سيقبلها شرطاً منطقياً صالحاً.

python التحقق من الاختيار النوعي غير متصل
services = [{'name': 'report', 'enabled': True}, {'name': 'archive', 'enabled': False}]
assert all(type(service['enabled']) is bool for service in services)
selected = [service['name'] for service in services if service['enabled']]
print(','.join(selected))
الناتج المتوقع
report

يرفض غير المنطقي قبل الترشيح ويطبع report فقط دون ادعاء when أو loop.

فصل مسؤولية الرصد والسياسة

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

الأخطاء الشائعة وإصلاحها

استخدام علم نصي شرطاً ضمنياً

لماذا يحدث؟
غاب عقد المنطق.
كيف تصلحه؟
تحقق أو حول المسموح عمداً.
كيف تتجنب تكراره؟
اختبر المشوه وfalse.

الوصول لتسجيل الحلقة كنتيجة واحدة

لماذا يحدث؟
أُهملت بنية العناصر.
كيف تصلحه؟
افحص results بالهوية والحقول.
كيف تتجنب تكراره؟
اختبر فشل عدة عناصر.

اعتبار المخبأ سياسة حالية

لماذا يحدث؟
اختلط عمر الرصد والمطلوب.
كيف تصلحه؟
افحص الحداثة وافصل ملكية السياسة.
كيف تتجنب تكراره؟
وثق المصدر وافتراض الصلاحية.

اختبر فهمك

1. لماذا لا يناسب when مع أقواس {{ enabled }} شرطاً افتراضياً؟

اعرض الحل المشروح

يقيم when تعبيراً أصلاً وتخفي الأقواس النوع وقد تسبب خطأ. استخدم منطقاً متحققاً أو تعبيراً صريحاً واختبر الدعم.

2. ماذا يحفظ تقرير الحلقة غير علم فشل عام؟

اعرض الحل المشروح

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

أهم ما تعلمته

  • عامل الحقائق رصداً والنصوص بيانات نوعية.
  • احفظ هوية العنصر عبر الشروط والتجميع.

المراجع الرسمية