動作環境について

daab は directサーバへ接続するクライアントとして動作します。 node.js を利用しているからといって、実行する環境を外部に公開する必要はなく、ファイアーウォール内でも動作します。

動作環境についてはさまざまなパターンがあります。以下に、典型的なものを作業例とともに示します。(bin/hubot を実行するフォルダでの作業です)

事前の準備として、チュートリアルなどを参考に HUBOT_DIRECT_TOKEN に設定する値を取得してください。


実機

実機に直接インストールするパターンです。動作させるマシンにログインし、セットアップします。

想定される用途例:

  • 社内で管理されたマシンからイントラネットに接続する。
  • Raspberry Pi などからセンサー情報を送信する。
  • 社外のイベントで設置したマシンで情報提供する。

動作させる方法には多くの方法がありますが、daab では通常起動の他に、以下の手軽な方法を提供しています。

daab forever

daab sdk は内部で forever を参照しており、以下の手順でバックグラウンド実行させることができます。 node.js が落ちた場合や scripts フォルダが変更された場合、自動的に再起動します。

$ export HUBOT_DIRECT_TOKEN=<access_token>
$ bin/hubot start

その他のコマンドは以下の通りです。

  • $ bin/hubot stop バックグラウンド実行を終了します。
  • $ bin/hubot restart 強制的に再起動します。
  • $ bin/hubot status 起動状態の詳細情報を表示します。
  • $ bin/hubot logs バックグラウンド動作中のログを表示しつづけます。
  • $ bin/hubot run フォアグラウンドで実行します。

仮想マシン

レンタルサーバや VPS 上に node.js をセットアップして動作させるパターンです。

Vagrant

daab sdk には Vagrantfile のサンプルが梱包されており、Vagrant をインストールした後は、以下の手順で仮想マシンを起動させることができます。

$ vagrant up

後々の sshコマンド経由でSSH接続する作業のために、設定ファイルを生成します。

$ vagrant ssh-config > ssh-config

Chef

仮想マシンへのインストール・環境構築作業を自動化するものとして、Chef があります。

ツールは、ChefDK を利用すると必要なものが一通りそろいます。 また、knife-solo も利用します。

$ chef gem install knife-solo

ツール類の準備後、cookbook の用意をします。daab sdk には Berksfile のサンプルが梱包されており、以下のコマンドで用意できます。

$ berks vendor cookbooks

準備ができれば、仮想マシンでの環境構築を実行できます。

$ knife solo prepare vagrant@default -F ssh-config --bootstrap-version 11.16.4-1
$ vi nodes/default.json
| run_list プロパティ に以下を追加。
| "recipe[yum]",
| "recipe[redisio]",
| "recipe[redisio::enable]",
| "recipe[daab]"
$ knife solo cook vagrant@default -F ssh-config

コンテナ

docker 上の node.js コンテナで動作させるパターンです。

docker

daab sdk には Dockerfile のサンプルが梱包されており、以下の手順で実行させることができます。

まずは、イメージを作成します。

$ docker build -t lisb/daab .

そのイメージをベースに daab を起動します。

$ docker run --name daab -d -p 8080:8080 --link daab-redis:redis --env HUBOT_DIRECT_TOKEN=<access_token> --env REDIS_URL=redis://<ip address>:6379 lisb/daab

また、redis は以下の手順で実行しておきます。(docker hub/redis より)

$ docker run --name daab-redis -d -p 6379:6379 redis redis-server --appendonly yes

(※ OS X や Windows の環境では boot2docker で試すことができます。このとき redis の接続先 ip は boot2docker ip コマンドで取得してください)


PaaS

Platform as a Service 上の node.js で動作させるパターンです。

Heroku

daab sdk には Procfile のサンプルが梱包されており、以下の手順で heroku にデプロイさせることができます。

$ heroku login
$ heroku create
$ heroku config:set HUBOT_DIRECT_TOKEN=<access_token>
$ git push heroku master

また、redis は以下の手順で追加しておきます。

$ heroku addons:add rediscloud

Cloud Foundry

以下の手順で Cloud Foundry を利用している PaaS にデプロイすることができます。(bin/hubot を実行するフォルダでの作業です。)

$ cf api https://api.eu-gb.bluemix.net
$ cf login
$ cf set-env HUBOT_DIRECT_TOKEN <access_token>
$ cf push app_name

詳細は、IBM Bluemix の Cloud Foundry コマンド・ライン・インターフェースを使用したコーディングの開始 をご参照ください。