sacana (Slackbot As Computer Account maNAger)

sacanaはSlack上からコンピューター上のユーザーアカウントを操作するためのSlack botです。

研究室やサークル、会社内などの共用コンピューターに導入することで、各団体のSlack上でユーザーアカウントの発行を行うことができるようになります。誰でも自由にアカウントの追加を許されている共用コンピューターの運用に際して、人手による運用コストを削減できるメリットがあります。 Slackにbotを追加するための権限と導入対象のコンピューターの管理権限が必要です。

免責事項

本ソフトウェアはその特性上、セキュリティが重要な環境での導入には慎重な判断を行ってください。 本ソフトウェアの導入や利用によって発生する如何なる問題についても開発元は一切の責任を負いません。 詳しくは、後述の「ライセンス」項をご参照ください。

動作環境

systemdが入ったLinux上での動作を想定しています。 Ubuntu 16.04, Ubuntu 18.04, CentOS 7.2で動作を確認しています。

インストール

  1. Rustをインストールします。
  2. cargo build --releaseでビルドします。
  3. settings.json.sample を参考に settings.json を記述します。
  4. install.sh を実行します。
  5. 起動すると、設定されたチャンネルに"Hello, this is sacana@xxxx"と応答があるのを確認します(「xxxx」はホスト名)。
  6. (オプション) 動作確認後、 /etc/ssh/sshd_configPasswordAuthentication no を記述します。

使い方

以下ではホスト名が HOSTNAME のコンピューター上で次の settings.json を用いて実行し、Slack上では @computer-account-manager の名前でbotとして追加した場合を例にして、使い方を説明します。

json { "SLACK_API_TOKEN": "(Botユーザー @computer-account-manager のトークン)", "channels": ["computer-account"], "public_key_uri_format": "https://github.com/{}.keys", "host_list_uri": "https://example.net/host_list.txt" }

また、 https://example.net/host_list.txt の中身は以下のようになります。

HOSTNAME HOSTNAME2

新規にアカウントを作る

  1. https://github.com/<自分のID>.keys に公開鍵が登録されていることを確認します。
  2. #computer-account チャンネルで @computer-account-manager create HOSTNAME と発言します。
  3. SSHで公開鍵認証によるログインができるか確認します。

既存のアカウントの公開鍵を更新する

  1. https://github.com/<自分のID>.keys に公開鍵が登録されていることを確認します。
  2. #computer-account チャンネルで @computer-account-manager update HOSTNAME と発言します。
  3. SSHでログインできるか確認します。

グループに参加する

slackbotが動いているか確認する

使い方を確認する

サービスを再起動する

管理対象のコンピューターを追加/削除する

  1. ホスト一覧を更新します。
  2. ホスト一覧から削除したコンピューター上でbotのサービスを停止します。
  3. ホスト一覧に新たに追加したコンピューター上でbotのサービスをインストール・起動します。
  4. 更新後のホスト一覧にあるすべてのコンピューター上でbotのサービスを再起動します。
  5. @computer-account-manager ping コマンドでホスト一覧に記載されているコンピューターすべてで正常にサービスが動作していることを確認します。

故障かな?と思ったら

コマンドに応答がない

まず、@computer-account-manager pingコマンドでpongが返ってくることを確認してください。

目安として、1分以上経っても目的のコンピューターから応答が返ってこないなら、サービスが起動していない可能性があります。その場合は以下の手順に従ってサービスの再起動を行います。

  1. root権限で systemctl restart sacana を実行します。 再起動によって"Hello, this is sacana@xxxx"と応答があったら、コマンドを再入力してください。
  2. 再起動による応答がなかった場合、syslogでエラーの詳細を確認し、修正してください。
  3. 不明な(修正不可能な)エラーの場合は、issueに報告してください。

コマンドが help の場合 / コマンドが間違っている場合

DMでの help コマンドや、コマンドを間違えた場合の返答はホスト一覧の一番上のホストが行っています。 これらの場合はホスト一覧の一番上のホストについて確認してください。 ホスト自体は正常でもホスト一覧側の記載がタイプミスなどで間違っている可能性もあります。

アカウントが作れない

例えばpublic_key_uri_formatで指定したリンク先がGitHubの場合、Slackの表示名がGitHubのアカウント名と異なるとアカウントを作ることができません。 その場合はSlackのプロフィール設定から表示名を適切なものに設定してください。 また、GitHubに公開鍵が登録されていない場合もログインできません。 その場合はまずGitHubに公開鍵を登録した後、 @computer-account-manager update HOSTNAME でHOSTNAME上のアカウントの公開鍵を更新します。

ライセンス

本プロジェクトは

のデュアルライセンスです。