Làm thế nào để tôi chạy ansible trên một máy chủ tại một thời điểm và thất bại


15

Tôi đã có một Playbook Ansible nơi tôi muốn cập nhật một số thiết bị không ổn định theo trình tự. Tôi có thể sử dụng serial:1, nhưng tôi muốn dừng hoàn toàn playbook nếu tôi gặp lỗi để tôi có thể sửa nó trước khi tiếp tục thay vì tích lũy lỗi.

Tôi cũng muốn khởi động lại playbook tại cùng một máy chủ mà tôi đã dừng. Hiện đang sử dụng Ansible v2.0, nhưng cũng có thể chuyển sang phiên bản mới hơn nếu loại tính năng đó chỉ khả dụng trong các phiên bản mới hơn.

Câu trả lời:


15

Playbook của bạn sẽ dừng khi xảy ra lỗi và bạn đang sử dụng serial: 1theo tài liệu .

Theo mặc định, Ansible sẽ tiếp tục thực hiện các hành động miễn là có các máy chủ trong nhóm chưa bị lỗi.

Điều đó nói rằng dường như có một số nhầm lẫn trong cộng đồng về hành vi mặc định và dường như nó đã thay đổi - hoặc bị lỗi - ở đâu đó giữa 1.8 và 2.1.

Vì vậy, nếu serial: 1không đủ, hãy sử dụng cài đặt bổ sung này:

max_failure_percentage: 0

Trong một số tình huống, chẳng hạn như với các bản cập nhật được mô tả ở trên, có thể nên hủy bỏ vở kịch khi đã đạt đến một ngưỡng thất bại nhất định. Để đạt được điều này, kể từ phiên bản 1.3, bạn có thể đặt tỷ lệ thất bại tối đa ...

==

Đối với việc thử lại Playbook của bạn, bạn sẽ thấy một thông báo thất bại như thế này:

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

Sử dụng --limitcờ đó và trong lần thực hiện tiếp theo của bạn ansible-playbookvà nó sẽ tiếp tục từ nơi thất bại.

Thử lại các tệp sẽ được tạo trừ khi bạn đặt retry_files_enabled = Falsetrong cấu hình của mình.

Ngoài ra, --start-at-taskcũng có thể làm việc.

Nguồn:

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-enables

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


1
Nếu bất cứ ai có ý thức tốt hơn về những gì đã xảy ra với thay đổi / lỗi trong 1.9 và 2.0, vui lòng cho tôi biết và tôi sẽ cập nhật câu trả lời này.
Thợ săn rừng

Vâng, tôi biết rằng ansible 2.0 sẽ tiếp tục chạy trên các máy chủ khác nếu nó bị lỗi trên một trong số chúng. Tôi đoán tôi đã không nghĩ rằng nó sẽ có hành vi khác nếu tôi chạy nối tiếp: 1. Có phải đó là những gì bạn đang nói?
Peter Turner

Điều đó đúng, nối tiếp: 1 nên có hành vi đó và nếu nó không (vì ??) thêm max_failure_percentage: 0, quá. Tôi cũng đề nghị nâng cấp Ansible vì 2.0 có rất nhiều lỗi.
Thợ săn rừng

Thực tế, rất nhiều lỗi mà bạn đang thiếu các tệp .retry trong 2.0! github.com/ansible/ansible/issues/13944
Thợ săn rừng

Heh, vì vậy tôi không phải là người duy nhất liên tục vá nguồn. Đó là điều tốt để biết.
Peter Turner

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.