2017-11-29 21 views
5

Tôi có ansible playbook đang chạy trên nhiều máy. Trong cuốn sách đó, tôi có một vài gói mà tôi đang cố gắng cài đặt bằng cách sử dụng apt, nhưng đôi khi chúng không thành công, vì các sách chơi khác đang chạy, cập nhật định kỳ hoặc bất kỳ cá thể apt nào khác chạy song song và lấy khóa. Về cơ bản tôi muốn thêm một vòng lặp thử lại trước khi từ bỏ nhưng không làm như vậy khi thử lại không được hỗ trợ cho apt, rõ ràng: tôi đã xem trang apt module trong ansible's documentation và thậm chí đã cố gắng sử dụng nó ngay cả khi nó là không có (rõ ràng là không thành công).Làm cách nào để tôi không thể thử lại tác vụ 'apt' nếu nó không thành công?

Dù sao - tôi cần ý tưởng về cách không thể thử lại, giả sử 3 lần, chậm 30 giây, nhưng chỉ trên các lỗi để cài đặt gói.

+0

Thêm dữ liệu: Tôi tìm thấy một cách để làm các lần thử lại và sự chậm trễ trên apt (bỏ lỡ 2 không gian trong thụt đầu dòng), nhưng tôi vẫn còn thiếu một phần của cách để biết rằng apt đã thành công. Tôi nghĩ rằng việc kiểm tra rc là 0 sẽ là đủ, nó không phải là. Tôi có thể dựa vào stderr để trống không? –

Trả lời

6

Có phổ task results tests, vì vậy bạn có thể sử dụng:

- apt: 
    name: build-essential 
    state: present 
    register: apt_res 
    retries: 5 
    until: apt_res | success 
Các vấn đề liên quan