ฉันจะเรียกใช้ ansible บนโฮสต์ได้ครั้งละหนึ่งตัวและทำลายความล้มเหลวได้อย่างไร


15

ฉันมีเพลย์บุ๊ค Ansible ที่ฉันต้องการอัปเดตอุปกรณ์ที่ไม่สม่ำเสมอตามลำดับ ฉันสามารถใช้งานserial:1ได้ แต่ฉันต้องการหยุด playbook โดยสิ้นเชิงถ้าฉันล้มเหลวดังนั้นฉันจึงสามารถแก้ไขได้ก่อนดำเนินการต่อแทนที่จะสะสมข้อผิดพลาด

ฉันต้องการรีสตาร์ท playbook ที่โฮสต์เดียวกับที่ฉันหยุด ปัจจุบันใช้ Ansible v2.0 แต่ยังสามารถเปลี่ยนไปใช้เวอร์ชันที่ใหม่กว่าได้หากคุณลักษณะประเภทนั้นมีให้เฉพาะในเวอร์ชันที่ใหม่กว่าเท่านั้น

คำตอบ:


15

PlayBook ของคุณจะหยุดเมื่อเกิดความล้มเหลวและคุณกำลังใช้serial: 1ตามเอกสาร

โดยค่าเริ่มต้น Ansible จะดำเนินการต่อการดำเนินการตราบใดที่มีโฮสต์ในกลุ่มที่ยังไม่ล้มเหลว

ที่กล่าวว่าดูเหมือนจะมีความสับสนในชุมชนมากกว่าพฤติกรรมเริ่มต้นและดูเหมือนว่าจะมีการเปลี่ยนแปลง - หรือถูกรถ - ที่ไหนสักแห่งระหว่าง 1.8 และ 2.1

ดังนั้นหากserial: 1ไม่พอเพียงให้ใช้การตั้งค่าเพิ่มเติมนี้:

max_failure_percentage: 0

ในบางสถานการณ์เช่นด้วยการอัปเดตการหมุนที่อธิบายข้างต้นอาจเป็นที่ต้องการที่จะยกเลิกการเล่นเมื่อถึงเกณฑ์ความล้มเหลวที่แน่นอน เพื่อให้บรรลุตามนี้ในเวอร์ชั่น 1.3 คุณสามารถตั้งค่าเปอร์เซ็นต์ความล้มเหลวสูงสุด ...

==

สำหรับการลองเล่นซ้ำคุณควรเห็นข้อความล้มเหลวดังนี้:

to retry, use: --limit @/home/user/site.retry

ใช้การ--limitตั้งค่าสถานะนั้นและในการดำเนินการครั้งถัดไปของคุณansible-playbookและจะดำเนินการต่อจากที่ที่ล้มเหลว

ไฟล์ลองใหม่จะถูกสร้างขึ้นเว้นแต่ว่าคุณได้ตั้งค่าไว้retry_files_enabled = Falseในการกำหนดค่าของคุณ

หรือ--start-at-taskอาจใช้งานได้

แหล่งที่มา:

https://github.com/ansible/ansible/issues/1663

https://github.com/ansible/ansible/issues/16241

http://docs.ansible.com/ansible/playbooks_delegation.html#rolling-update-batch-size

http://docs.ansible.com/ansible/playbooks_delegation.html#maximum-failure-percentage

http://docs.ansible.com/ansible/intro_configuration.html#retry-files-enabled

http://docs.ansible.com/ansible/playbooks_startnstep.html#start-at-task


1
หากใครมีความรู้สึกที่ดีขึ้นของสิ่งที่เกิดขึ้นกับการเปลี่ยนแปลง / ข้อผิดพลาดใน 1.9 และ 2.0 โปรดแจ้งให้เราทราบและฉันจะอัปเดตคำตอบนี้
Woodland Hunter

ใช่ฉันรู้ว่า ansible 2.0 จะยังคงทำงานบนโฮสต์อื่น ๆ ต่อไปถ้ามันได้รับความล้มเหลวในหนึ่งใน 'em ฉันเดาว่าฉันไม่คิดว่ามันจะมีพฤติกรรมแตกต่างกันถ้าฉันวิ่งตามลำดับ: 1 นั่นคือสิ่งที่คุณพูด
Peter Turner

ถูกต้องอนุกรม: 1 ควรมีพฤติกรรมนั้นและหากไม่มี (เพราะ ??) ให้เพิ่ม max_failure_percentage: 0 เช่นกัน ฉันยังขอแนะนำให้อัพเกรดเป็น 2.0 เบิ้ลมีจำนวนมากของโรคจิต
Woodland Hunter

ข้อบกพร่องมากมายจริงๆแล้วคุณหายไปไฟล์. retry ใน 2.0! github.com/ansible/ansible/issues/13944
Woodland Hunter

เฮ้ดังนั้นฉันไม่ใช่คนเดียวที่คอยแก้ไขแหล่งข้อมูลอยู่ตลอดเวลา เป็นเรื่องดีที่รู้
Peter Turner

2

ใน 2.5+ (ดีหลังจากคำถาม) มีดีบักเกอร์ซึ่งครอบคลุมเกือบทั้งหมดนี้: https://docs.ansible.com/ansible/latest/user_guide/playbooks_debugger.html

สำหรับการใช้งานทีละครั้งให้ใช้ "--forks 1" เชื่อมต่อกับระบบเดียวในแต่ละครั้งถ้าคุณต้องการที่จะทำโฆษณาแบบเฉพาะกิจและไม่ใช่ทุกครั้ง

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