Computer >> Máy Tính >  >> Lập trình >> Ruby

Thông báo AptWatcher

Tại Honeybadger, chúng tôi đã sử dụng tạp dề để cập nhật các bản cập nhật aptpackage cho tất cả các máy chủ. Lúc đầu, tôi có các email trên tạp dề đến hộp thư đến của mình, nhưng tại một số thời điểm, tôi quyết định rằng tôi muốn có chúng hơn là kênh thông báo Slack của chúng tôi. Slack có một ứng dụng email tiện dụng có thể nhận email và đăng chúng lên một kênh, vì vậy tôi đã thử điều đó. Nó hoạt động, nhưng tôi không thích cách các email hiển thị dưới dạng tệp và có tất cả tiếng ồn của tiêu đề thư, v.v., vì vậy tôi quyết định tạo ra một cái gì đó mà tôi muốn nhiều hơn một chút. Vì vậy, AptWatcher đã ra đời.

AptWatcher là một siêu phẩm ứng dụng đơn giản mà tôi đã nhanh chóng tập hợp vào cuối tuần để chuyển tiếp thông tin về các bản cập nhật gói apt từ phục vụ trên kênh thông báo Slack của chúng tôi. Tất cả những gì nó làm là nó cung cấp một HTTPendpoint để lắng nghe danh sách các tên gói và phiên bản đã được cập nhật trên máy chủ. Nó so sánh danh sách đó với danh sách đã nhận trước đó từ máy chủ và nếu tìm thấy bất kỳ gói nào trong danh sách mới không có trong danh sách cũ, nó sẽ gửi các gói mới đó tới Slack thông qua một webhook đến.

Danh sách các gói đó có thể được tạo trên máy chủ bằng cách chạy sau:

$ apt-get upgrade -s | grep ^Inst | awk '{ print $2,$3; }' | tr -d '[]'

Điều đó tạo ra một danh sách các gói trông giống như sau:

libxml2-dev 2.9.1+dfsg1-3ubuntu4.7
libxml2 2.9.1+dfsg1-3ubuntu4.7
libnl-genl-3-200 3.2.21-1ubuntu1.1
libnl-3-200 3.2.21-1ubuntu1.1

Và danh sách tương tự đó sẽ hiển thị trong Slack khi được định tuyến qua AptWatcher:

Thông báo AptWatcher

Cài đặt

Cài đặt đơn giản bằng cách nhấp vào nút Heroku trong README của repo, sau đó thêm công việc cron vào tất cả các máy chủ của bạn để báo cáo các thay đổi của gói cho AptWatcher. Bản ghi máy chủ sẽ được tạo tự động trongAptWatcher khi báo cáo đến từ máy chủ.

Chúng tôi sử dụng Ansible tại Honeybadger để tự động hóa tất cả mọi thứ, vì vậy tôi đã thực hiện cách tiếp cận nhanh chóng và hiệu quả để thay thế tạp dề bằng AptWatcher:

$ ansible all -m apt -a 'pkg=apticron state=removed'
$ ansible all -m cron -a "name='Report pending apt changes' special_time=daily job='apt-get upgrade -s | grep ^Inst | awk \'{ print \$2,\$3; }\' | tr -d \'[]\' | curl -u user:pass --data-binary @- https://our.aptwatcher.url/report/\$(hostname) &> /dev/null'"

Sau khi hoàn tất, tất cả những gì bạn cần làm là đợi báo cáo gói hiển thị trong Slack. Dễ dàng!