Honeybadger-এ আমরা সমস্ত সার্ভারের জন্য অ্যাপটপ্যাকেজ আপডেটের শীর্ষে থাকার জন্য apticron ব্যবহার করছি। প্রথমে আমার ইনবক্সে apticron ইমেল আসছিল, কিন্তু কিছু সময়ে আমি সিদ্ধান্ত নিয়েছিলাম যে আমি সেগুলিকে আমাদের স্ল্যাক বিজ্ঞপ্তি চ্যানেলে রাখব। স্ল্যাকের একটি সহজ ইমেল অ্যাপ্লিকেশন রয়েছে যা ইমেলগুলি গ্রহণ করতে পারে এবং সেগুলি একটি চ্যানেলে পোস্ট করতে পারে, তাই আমি এটি চেষ্টা করেছি। এটি কাজ করেছে, কিন্তু আমি পছন্দ করিনি যে কীভাবে ইমেলগুলি ফাইল হিসাবে দেখায়, এবং মেল হেডার ইত্যাদির সমস্ত গোলমাল ছিল, তাই আমি এমন কিছু চাবুক করার সিদ্ধান্ত নিয়েছি যা আমি আরও কিছুটা চাই। এইভাবে AptWatcher এর জন্ম হয়েছিল।
AptWatcher হল একটি সুপার আমাদের স্ল্যাক নোটিফিকেশন চ্যানেলে আমাদের সার্ভার থেকে অ্যাপটি প্যাকেজ আপডেট সম্পর্কে তথ্য রিলে করার জন্য আমি সপ্তাহান্তে সহজ অ্যাপটি দ্রুত একসাথে ছুঁড়ে দিয়েছিলাম। এটি শুধুমাত্র একটি HTTP এন্ডপয়েন্ট প্রদান করে যা একটি সার্ভারে আপডেট করার জন্য প্রস্তুত প্যাকেজের নাম এবং সংস্করণগুলির একটি তালিকা শোনে। এটি সেই তালিকাটিকে পূর্বে সার্ভার থেকে প্রাপ্ত তালিকার সাথে তুলনা করে, এবং যদি নতুন তালিকায় এমন কোনো প্যাকেজ পাওয়া যায় যা পুরানো তালিকায় ছিল না, তাহলে এটি একটি ইনকামিং ওয়েবহুকের মাধ্যমে সেই নতুন প্যাকেজগুলিকে স্ল্যাকে পাঠায়৷
প্যাকেজগুলির তালিকাটি সার্ভারে এটি চালানোর মাধ্যমে তৈরি করা যেতে পারে:
$ apt-get upgrade -s | grep ^Inst | awk '{ print $2,$3; }' | tr -d '[]'
এটি প্যাকেজগুলির একটি তালিকা তৈরি করে যা এইরকম দেখায়:
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
এবং একই তালিকা AptWatcher:
এর মাধ্যমে রাউট করার সময় স্ল্যাকে প্রদর্শিত হবে
ইনস্টলেশন
রেপোর README-এ Heroku বোতামে ক্লিক করার এবং তারপর AptWatcher-এ প্যাকেজ পরিবর্তনগুলি রিপোর্ট করার জন্য আপনার সমস্ত সার্ভারে একটি ক্রোন কাজ যোগ করার মতোই ইনস্টলেশন সহজ। সার্ভার থেকে রিপোর্ট আসার সাথে সাথে হোস্ট রেকর্ডগুলি স্বয়ংক্রিয়ভাবে AptWatcher-এ তৈরি হয়ে যাবে।
আমরা সমস্ত জিনিস স্বয়ংক্রিয় করতে Honeybadger-এ Ansible ব্যবহার করি, তাই আমি AptWatcher-এর সাথে apticron প্রতিস্থাপন করার জন্য দ্রুত এবং নোংরা পদ্ধতি গ্রহণ করেছি:
$ 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'"
একবার এটি হয়ে গেলে, আপনাকে যা করতে হবে তা হল প্যাকেজ রিপোর্টগুলি স্ল্যাকে প্রদর্শিত হওয়ার জন্য অপেক্ষা করুন৷ ইজি-পিসি!