ฉันมีงานที่จะตรวจสอบว่ากระบวนการของฉันกำลังฟังบนพอร์ต 8080 และเฉพาะเมื่อรหัสออกไม่ใช่ศูนย์ฉันจะเรียกใช้failข้อความได้หรือไม่
เมื่อบริการกำลังทำงานบริการจะรายงานว่ามีการเปลี่ยนแปลงสถานะ okฉันต้องการที่จะพูด อะไรchangedสถานะจริงหมายถึงในเบิ้ล?
ฉันมีงานที่จะตรวจสอบว่ากระบวนการของฉันกำลังฟังบนพอร์ต 8080 และเฉพาะเมื่อรหัสออกไม่ใช่ศูนย์ฉันจะเรียกใช้failข้อความได้หรือไม่
เมื่อบริการกำลังทำงานบริการจะรายงานว่ามีการเปลี่ยนแปลงสถานะ okฉันต้องการที่จะพูด อะไรchangedสถานะจริงหมายถึงในเบิ้ล?
คำตอบ:
สิ่งใดก็ตามที่ขึ้นอยู่กับบางสิ่งบางอย่างบนเป้าหมายจะได้รับสถานะ "เปลี่ยน" เมื่อดำเนินการแม้ว่าจะเป็นเพียงคำสั่งเชลล์เพื่อสะท้อนบางสิ่งก็ตาม
เพื่อไม่ให้สถานะ "เปลี่ยน" คุณสามารถเพิ่มบรรทัดต่อไปนี้ในงาน:
changed_when: false
สิ่งนี้และสิ่งอื่น ๆ ที่เกี่ยวข้องมีการระบุไว้ในหน้าเอกสารที่ไม่น่าเชื่อถือนี้
งานเบิ้ลควรจะidempotent เช่น. ถ้างานไม่ได้ปรับเปลี่ยนอะไรมันควรจะกลับแทนok changedโมดูลและงานบิวด์อินส่วนใหญ่มีอยู่แล้ว แต่สำหรับงานต่าง ๆ เช่นcommandและshellคุณต้องการความช่วยเหลือเล็กน้อย
สำหรับงานที่ตรวจสอบอย่างหมดจดและไม่แก้ไขอะไรคุณควรเพิ่ม:
changed_when: False
always_run: yes
หลังช่วยให้งานในการทำงานแม้จะอยู่ในโหมดการตรวจสอบ
เพื่อความสมบูรณ์งานดังกล่าวมักจะรวมกับงานอื่นที่ทำการแก้ไขจริงเช่น:
- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0