Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

AptWatcherの発表

Honeybadgerでは、apticronを使用して、すべてのサーバーのaptpackageアップデートを常に把握しています。最初は、apticronのメールが受信トレイに届きましたが、ある時点で、Slack通知チャネルにapticronのメールを送信することにしました。 Slackには、メールを受信して​​チャンネルに投稿できる便利なメールアプリがあるので、試してみました。動作しましたが、メールがファイルとして表示されるのが気に入らなかったし、メールヘッダーなどのノイズが多かったので、もう少し欲しいものを作り上げることにしました。このようにして、AptWatcherが誕生しました。

AptWatcherはスーパーです 週末にすぐにまとめて、aptパッケージの更新に関する情報をサーバーからSlack通知チャネルに中継するシンプルなアプリ。サーバー上で更新の準備ができているパッケージ名とバージョンのリストをリッスンするHTTPendpointを提供します。そのリストをサーバーから以前に受信したリストと比較し、古いリストになかったパッケージが新しいリストで見つかった場合は、着信Webhookを介してそれらの新しいパッケージをSlackに送信します。

パッケージのリストは、次のコマンドを実行することでサーバー上で生成できます:

$ 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を介してルーティングすると、同じリストがSlackに表示されます:

AptWatcherの発表

インストール

インストールは、リポジトリのREADMEのHerokuボタンをクリックし、すべてのサーバーにcronジョブを追加して、パッケージの変更をAptWatcherに報告するだけです。レポートがサーバーから到着すると、ホストレコードはAptWatcherで自動的に作成されます。

私たちはHoneybadgerでAnsibleを使用してすべてを自動化しているので、apticronを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'"

それが完了したら、パッケージレポートがSlackに表示されるのを待つだけです。簡単-簡単!


  1. Rubyの実用的なリンクリスト

    これは、「Rubyの実用的なコンピュータサイエンス」シリーズの3番目のエントリです。今日はリンクリストについてお話します。 では、リンクリストとは何ですか? 名前が示すように、リンクリストはデータをリスト形式で保存する方法です(ありがとう、キャプテンオブビシャス!)。 「リンクされた」部分は、データがノードに格納され、これらのノードが順番に相互にリンクされているという事実に由来します。 これはアレイとどう違うのですか? リンクリストと配列 リンクリストには、配列とは異なるパフォーマンス特性があります。これが、どちらかを選択する理由の1つです。 これは、リンクリストが配列よりも

  2. Discord コマンド一覧

    ゲーマーは、Mumble、Steam、TeamSpeak などのさまざまな種類のチャット アプリケーションを使用して、ゲームプレイ中に通信します。オンラインゲームが好きな方ならご存知かもしれません。最近最も使用されているトレンディなチャット アプリの 1 つが Discord です。 Discord を使用すると、プライベート サーバーを介して他のオンライン プレイヤーと音声またはビデオ チャットやテキスト メッセージを送信できます。複数の Discord コマンドがあります 、サーバーに入力して、効率を改善し、チャンネルを管理し、多くの楽しみを持つことができます.これらは、Discord ボ