ควบคุมความล้มเหลว: failed_when และ ignore_errors
กำหนดว่าสิ่งใดนับเป็นความล้มเหลว
ควบคุมความล้มเหลว: failed_when และ ignore_errors เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 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: falseignore กับ 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) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ควบคุมความล้มเหลว: failed_when และ ignore_errors”
กำหนดว่าสิ่งใดนับเป็นความล้มเหลว คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ควบคุมความล้มเหลว: failed_when และ ignore_errors” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- จัดกลุ่มงานด้วย block
- Try / Catch ด้วย rescue และ always
- ควบคุมความล้มเหลว: failed_when และ ignore_errors
- การตรวจสอบแบบกำหนดเองด้วยโมดูล fail