0Pricing
Ansible Academy · บทเรียน

ควบคุมความล้มเหลว: failed_when และ ignore_errors

กำหนดว่าสิ่งใดนับเป็นความล้มเหลว

ควบคุมความล้มเหลว: failed_when และ ignore_errors เป็นบทเรียน Ansible Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 ซึ่งเป็นคีย์เวิร์ดที่เกี่ยวข้อง ใช้ควบคุมสถานะการเปลี่ยนแปลงแทนความล้มเหลว เหมาะสำหรับระบุว่างานคำสั่งไม่เคยเปลี่ยนแปลง

- 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” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ansible Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ควบคุมความล้มเหลว: failed_when และ ignore_errors”

กำหนดว่าสิ่งใดนับเป็นความล้มเหลว คุณปฏิบัติ Ansible Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ansible Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ansible Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ควบคุมความล้มเหลว: failed_when และ ignore_errors” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ansible Academy นี้ได้ไหม

ได้ บทเรียน Ansible Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. จัดกลุ่มงานด้วย block
  2. Try / Catch ด้วย rescue และ always
  3. ควบคุมความล้มเหลว: failed_when และ ignore_errors
  4. การตรวจสอบแบบกำหนดเองด้วยโมดูล fail
← กลับไปที่ Ansible Academy