Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

AptWatcher 발표

Honeybadger에서는 apticron을 사용하여 모든 서버에 대한 aptpackage 업데이트를 최신 상태로 유지하고 있습니다. 처음에는 받은 편지함으로 apticron 이메일이 도착했지만 어느 시점에서 나는 Slack 알림 채널에서 이메일을 받는 것이 낫다고 결정했습니다. Slack에는 이메일을 수신하여 채널에 게시할 수 있는 편리한 이메일 앱이 있어서 시도해 보았습니다. 작동했지만 이메일이 파일로 표시되는 방식이 마음에 들지 않고 메일 헤더 등의 모든 소음이 있었기 때문에 조금 더 원하는 것을 채찍질하기로 결정했습니다. 그래서 AptWatcher가 탄생했습니다.

AptWatcher는 슈퍼입니다. apt 패키지 업데이트에 대한 정보를 서버에서 Slack 알림 채널로 전달하기 위해 주말에 재빠르게 만든 간단한 앱입니다. 그것이 하는 모든 일은 서버에서 업데이트할 준비가 된 패키지 이름 및 버전 목록을 수신하는 HTTPendpoint를 제공합니다. 이 목록을 서버에서 이전에 받은 목록과 비교하고 새 목록에서 이전 목록에 없는 패키지가 발견되면 새 패키지와 함께 들어오는 웹훅을 통해 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 발표

설치

설치는 repo의 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에 표시될 때까지 기다리기만 하면 됩니다. 간단합니다!