Làm thế nào để giải quyết E405: Các tác vụ gói từ xa nên thử lại trong Ansible?


7

E405 v4.0.0 Các tác vụ gói từ xa nên thử lại Các thao tác gói không đáng tin cậy vì chúng yêu cầu giao tiếp mạng và tính khả dụng của các máy chủ từ xa. Để giảm thiểu các vấn đề tiềm ẩn, nên thử lại bằng cách đăng ký: my_result và cho đến khi: my_result | sự thành công

Điều này hiển thị khi chạy ansible-lintnhư lỗi sau:

[405] Remote package tasks should have a retry
plays/sample.yml:31
Task/Handler: Install list of packages

Cho mã mẫu:

- name: Install list of packages
  apt:
    name: [jq, vim, curl, unzip, dnsutils]
    state: present

Làm thế nào để giải quyết điều này?

Câu trả lời:


8

ansible-lintcảnh báo 405có thể khá khó chịu như trong một số trường hợp nhất định, tức là khi chạy thử lại cục bộ rất khó tạo ra sự khác biệt. Trên thực tế, việc giải quyết nó thường chỉ đơn giản là một trường hợp thêm vào như sau:

register: task_result
until: task_result is success
retries: 10
delay: 2

Khi điều này được bổ sung vào nhiệm vụ Ansible sẽ thử lại gấp mười lần với một sự chậm trễ của hai giây giữa mỗi retry cho đến khi returncode0.


2
Có vẻ như là một quy tắc cực kỳ khó chịu đối với tôi ... có một số trường hợp điều này sẽ rất tốt để có, nhưng trong thế giới thực, tôi nghĩ rằng tôi đã thấy điều này trên các nhiệm vụ liên quan đến gói có thể <1% thời gian. Đó là lý do tại sao tôi đã mở 405 tác vụ gói từ xa nên thử lại - quá nitpicky?
geummingguy

Tôi không nghĩ nó quá cầu kỳ - tôi thấy thường xuyên hơn là tôi không thêm các dòng bổ sung chỉ để xoa dịu Ansible-lint hơn là để cung cấp giá trị, điều này có vẻ sai. Thử lại theo mặc định có vẻ hợp lý.
Richard Slater

1% là một con số khổng lồ nếu bạn thực hiện các thao tác số trong quá trình triển khai. Thậm chí 1/1000 sẽ đủ cao để yêu cầu logic thử lại. Đừng quên yếu tố nhân và chi phí của một thất bại.
sorin

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.