0Pricing
Ansible Academy · درس

التحكّم في الفشل: failed_when وignore_errors

حدّد ما يُعدّ فشلًا

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

أنت من يحدد معنى الفشل

يفشل Ansible في مهمة إذا كان رمز الإرجاع غير صفري، لكن يمكنك تجاوز ذلك. تتيح لك كلمتان مفتاحيتان إعادة تعريف الفشل. 🎛️

يواصل ignore_errors التنفيذ

عيّن ignore_errors إلى true، وسيُسجَّل فشل المهمة، لكنه لن يوقف التنفيذ. وسيظل المضيف ضمن التنفيذ.

- name: Try optional cleanup
  ansible.builtin.command: /opt/maybe-missing
  ignore_errors: true

ستظل تظهر بحالة فشل

لا يخفي ignore_errors الفشل؛ إذ سيظل الناتج يعرض FAILED. فهو يمنع الفشل من إيقاف المهام اللاحقة فقط.

يعيد failed_when تعريف الفشل

استخدم failed_when لتحديد شرط الفشل الخاص بك. تفشل المهمة فقط عندما يكون تعبيرك صحيحًا.

- name: Check status
  ansible.builtin.command: /opt/healthcheck
  register: result
  failed_when: result.rc > 1

إقرانه مع register

يفحص failed_when عادةً نتيجةً مسجَّلة: rc أو stdout أو stderr الخاصة بها. التقط الناتج أولًا، ثم قيّمه.

- ansible.builtin.command: grep ERROR app.log
  register: out
  failed_when: "'CRITICAL' in out.stdout"

لا تفشل هذه المهمة أبدًا

عيّن failed_when إلى false، وبذلك لا يمكن للمهمة أن تفشل أبدًا، حتى عند وجود رمز غير صفري. وهذا أنظف من ignore_errors مع الأوامر المعروفة بإصدار ناتج مزعج.

- ansible.builtin.command: pkill myapp
  failed_when: false

مطابقة شروط متعددة

يمكن أن يستقبل failed_when قائمةً من الشروط المرتبطة بـ and، أو تعبيرًا مركبًا يستخدم or لوضع قواعد أكثر تعقيدًا.

failed_when:
  - result.rc != 0
  - "'skipped' not in result.stdout"

يشبهه changed_when

يتحكم changed_when المرتبط به في حالة التغيير بدلًا من الفشل، وهو مفيد لوضع علامة تفيد بأن مهمة command لم تتغير أبدًا.

- ansible.builtin.command: /opt/report
  changed_when: false

المقارنة بين ignore وfailed_when

استخدم failed_when عندما تتمكن من وصف النجاح بدقة؛ ولا تستخدم ignore_errors إلا للخطوات الاختيارية فعلًا التي تُنفَّذ بأفضل جهد.

ينسجم جيدًا مع rescue

بدلًا من تجاهل الأخطاء، دع فشلًا حقيقيًا يفعّل كتلة rescue. وهكذا تحصل على استرداد بدلًا من تخطٍّ صامت. 🤝

كلاهما على مستوى المهمة

يُستخدم كل من failed_when وignore_errors مع مهمة واحدة، وليس مع تنفيذ كامل. وتحدد كل مهمة سلوكها الخاص عند الفشل.

تحقق سريع

لنقارن بين الكلمتين المفتاحيتين.

مراجعة

يحدد failed_when بدقة متى تفشل المهمة، بينما يتيح ignore_errors استمرار التنفيذ بعد حدوث الفشل. أنت من يضع القواعد. ✅

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

هل درس «التحكّم في الفشل: failed_when وignore_errors» مجاني؟

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

ماذا ستتعلم في «التحكّم في الفشل: failed_when وignore_errors»؟

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

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

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

كم من الوقت يستغرق درس «التحكّم في الفشل: failed_when وignore_errors»؟

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

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

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

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

  1. تجميع المهام باستخدام block
  2. Try / Catch باستخدام rescue وalways
  3. التحكّم في الفشل: failed_when وignore_errors
  4. تأكيدات مخصّصة باستخدام وحدة fail
← العودة إلى Ansible Academy