My Tracking

My Tracking

記憶力の低下が気になるアラフォー男の備忘録

CentsOS7にHubotをインストールしてみた

いまさらながら、下記書籍を使用し、slackに関していろいろ試すためにまずは環境整備。 Hubotを利用する環境を CentsOS7に整えるための備忘録。

Slack入門 [ChatOpsによるチーム開発の効率化]

Slack入門 [ChatOpsによるチーム開発の効率化]

目次

 環境

下記のとおり、CentOS7.2を利用する。ここでは、まだNode.jsはインストールされていないため 後で、インストールする。

[myhubot@cent7 bot]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[myhubot@cent7 bot]$

 最初に(少しハマったこと・・・)

  • rootでインストール作業しない

rootでインストールすると、以降の作業の局面で、下記のようなエラーに遭遇する。 パーミッション変更などで、対応してみたが、別の一般ユーザーを新たに作り、 セットアップをしたら、すんなりいったので、ここでは、別の一般ユーザー「myhubot」を作ったうえで作業する。

[root@cent7 bot]# yo hubot
/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/node_modules/mkdirp/index.js:90
                    throw err0;
                    ^

Error: EACCES: permission denied, mkdir '/root/.config'
    at Error (native)
    at Object.fs.mkdirSync (fs.js:794:18)
    at sync (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/node_modules/mkdirp/index.js:71:13)
    at Function.sync (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/node_modules/mkdirp/index.js:77:24)
    at Object.create.all.get (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/index.js:38:13)
    at Object.Configstore (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/configstore/index.js:27:44)
    at new Insight (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/node_modules/insight/lib/index.js:37:34)
    at Object.<anonymous> (/root/.nvm/versions/node/v4.6.1/lib/node_modules/yo/lib/cli.js:172:11)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
[root@cent7 bot]#
  • node.jsは v4.2を利用した。

2016年10月時点で、 node.jsは「v4.6」がダウンロード可能な模様だが、参考URLのとおり、「v4.2」を利用した。

以上を踏まえて、(いいか悪いかは別として)一般ユーザー「myhubot」で node.jsは v4.2を利用する前提で、以降を実施した。

 参考URL

基本下記をそのまま実施したらうまくいった。(ありがたや~)

qiita.com

 nvmの用意

nvmはnode.jsのバージョンを簡単に切り替えられるツールとのことなので、 まずは、インストール。

[myhubot@cent7 ~]$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.                                                                               29.0/install.sh | bash
~ 中略 ~
[myhubot@cent7 ~]$ source ~/.bashrc
[myhubot@cent7 ~]$ nvm --version
0.29.0
[myhubot@cent7 ~]$ 

 node.jsをインストール

[myhubot@cent7 ~]$ nvm install v4
~ 中略 (いろいろ出力され・・)~
Now using node v4.6.1 (npm v2.15.9)
[myhubot@cent7 ~]$

「node v4.6.1」がインストールされた模様。使いたいのは「v4.2」なので、 明示的に指定し、インストールする。

[myhubot@cent7 ~]$ nvm install v4.2
Downloading https://nodejs.org/dist/v4.2.6/node-v4.2.6-linux-x64.tar.xz...
######################################################################## 100.0%
WARNING: checksums are currently disabled for node.js v4.0 and later
Now using node v4.2.6 (npm v2.14.12)
[myhubot@cent7 ~]$ 

 利用できるバージョンを確認とデフォルト利用バージョンの設定

[myhubot@cent7 ~]$ nvm ls
->       v4.2.6
         v4.6.1
node -> stable (-> v4.6.1) (default)
stable -> 4.6 (-> v4.6.1) (default)
iojs -> N/A (default)
[myhubot@cent7 ~]$

デフォルトv4.6.1となっているようなので、 下記のとおり、明示的に「v4.2」を使うことを指定するとともに、

[myhubot@cent7 ~]$ nvm use v4.2
Now using node v4.2.6 (npm v2.14.12)
[myhubot@cent7 ~]$

デフォルト利用するバージョンをv4.2に設定する。

[myhubot@cent7 ~]$ nvm alias default v4.2.2
! WARNING: Version 'v4.2.2' does not exist.
default -> v4.2.2 (-> N/A)
[myhubot@cent7 ~]$

 Hubotのインストール

下記のように、Hubotをインストールする

[myhubot@cent7 ~]$ npm install -g hubot coffee-script
[myhubot@cent7 ~]$ npm install -g yo generator-hubot

なお、「yo」とはYeomanとうhubotのプロジェクトの構築ツール?のようなもので 当ツールの雛形を利用したプロジェクトの作成が推奨されている模様。

 プロジェクトの新規作成

yoコマンドを使用し、プロジェクト新規作成する。 ここでは、myhubotユーザーのホームディレクトリに「botディレクトリを 作成し、そこで、作業したものとする。

[myhubot@cent7 ~]$ pwd
/home/myhubot
[myhubot@cent7 ~]$ mkdir bot
[myhubot@cent7 ~]$ cd bot
[myhubot@cent7 bot]$ yo hubot
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes
                     _____________________________
                    /                             \
   //\              |      Extracting input for    |
  ////\    _____    |   self-replication process   |
 //////\  /_____\   \                             /
 ======= |[^_/\_]|   /----------------------------
  |   | _|___@@__|__
  +===+/  ///     \_\
   | |_\ /// HUBOT/\\
   |___/\//      /  \\
         \      /   +---+
          \____/    |   |
           | //|    +===+
            \//      |xx|

? Owner <user@example.com>
? Bot name bot
? Description A simple helpful robot for your Company
? Bot adapter campfire

~ 中略 ~

下記設定の入力が求められるが、参考URLのとおり、デフォルト(全部Enter)で設定してみた。

  • Owner User・・・ユーザー(Emailアドレス)
  • Bot name ・・・Botの名前
  • Description ・・・Botの説明
  • Bot adapter ・・・Adapterの設定

 botを起動

下記のように、hubotを起動する。 下記の通り、エラーがでるが、ここではひとまず無視してGO!

[myhubot@cent7 bot]$  bin/hubot
bot> [Tue Oct 18 2016 09:03:50 GMT+0900 (JST)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.

Your hubot-scripts.json is empty, so you just need to remove it.
[Tue Oct 18 2016 09:03:50 GMT+0900 (JST)] ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s  | grep web-url | cut -d= -f2)`
[Tue Oct 18 2016 09:03:51 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379

プロンプトが入力待ちになったら、「bot ping」と実行する。 「PONG」と返答されれば、正常に稼働している模様。

bot> bot ping
bot> PONG
bot>

「たったこれだけ?」と思うところだが、まぎれもなくコンピュータのボットと会話が成立していると思うと、 少しうれしい。

この環境と先の書籍をを利用して、いろいろ試していく予定。