งาน Ansible มีความสำคัญอย่างไรในการรายงานว่ามีบางอย่างเปลี่ยนไป


20

ฉันมีงานที่จะตรวจสอบว่ากระบวนการของฉันกำลังฟังบนพอร์ต 8080 และเฉพาะเมื่อรหัสออกไม่ใช่ศูนย์ฉันจะเรียกใช้failข้อความได้หรือไม่

เมื่อบริการกำลังทำงานบริการจะรายงานว่ามีการเปลี่ยนแปลงสถานะ okฉันต้องการที่จะพูด อะไรchangedสถานะจริงหมายถึงในเบิ้ล?

คำตอบ:


11

สิ่งใดก็ตามที่ขึ้นอยู่กับบางสิ่งบางอย่างบนเป้าหมายจะได้รับสถานะ "เปลี่ยน" เมื่อดำเนินการแม้ว่าจะเป็นเพียงคำสั่งเชลล์เพื่อสะท้อนบางสิ่งก็ตาม

เพื่อไม่ให้สถานะ "เปลี่ยน" คุณสามารถเพิ่มบรรทัดต่อไปนี้ในงาน:

changed_when: false

สิ่งนี้และสิ่งอื่น ๆ ที่เกี่ยวข้องมีการระบุไว้ในหน้าเอกสารที่ไม่น่าเชื่อถือนี้


27

งานเบิ้ลควรจะ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

2
สิ่งนี้ควรตรวจสอบคำตอบ
mastier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.