忘備録

日々の調べ物をまとめる。アウトプットする。基本自分用。

【Ubuntu】Hubotの開発環境構築をVagrantで自動化

Hubotを開発するための環境構築用のVagrantfile作りました。

github.com

ホストOSで起動しているクライアントからのリクエストがゲストOSで起動したHubotに飛ぶようになっています。

Slackがクライアントの場合でしか試せてませんが、他のクライアントでもいけると思います。

また、node-inspectorとChromeがインストールされるようプロビジョニングしているので、GUIデバッグすることもできます。

なお、前提としてゲストOSはUbuntuデスクトップです。

以前上げた記事のBoxファイルをベースにしてます。

mktktmr.hatenablog.jp

はまったこと

nodeのバージョンが古い

最初、下記の記事とか類似の記事がたくさんあったので参考にnodeを入れたのですが、最新が入りませんでした。

Ubuntu 14.04 に Node.jsをインストールする - Qiita

結局、公式に行ったら答えがありました。

Installing Node.js via package manager | Node.js

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs

npmのバージョンが古い

Node.jsとnpmをアップデートする方法 – Rriver

npm update -g npm

で解決。

再起動するとiptablesの設定が吹っ飛ぶ

Ubuntuは再起動するたびにiptablesの設定がリセットされてしまうみたい。

iptables-persistentというツールを使うと永続化できます。

$ sudo apt-get install -y iptables-persistent

これで解決だと思いきや、プロビジョニングで、エラーが発生。。。

$ sudo apt-get install -y iptables-persistent
・
・
・
==> default: dpkg-preconfigure: 標準入力を再オープンできません: そのようなファイルやディレクトリはありません

環境変数DEBIAN_FRONTENDnoninteractiveにしてインストールすることで解決できました。

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y iptables-persistent

DEBIAN_FRONTEND=noninteractive ってなんだ - Qiita

これは、インストーラで使うユーザインタフェースを制御するものらしい。 DEBIAN_FRONTEND=noninteractive のときは、インタラクティブな設定をしなくなる(=入力待ちでブロックしなくなる)ので、自動インストールの際には便利だとか。

Chromeのインストールでエラーが発生する

sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
sudo apt-get update
sudo apt-get install -y google-chrome-stable
・
・
・
==> default: W
==> default: : 
==> default: http://dl.google.com/linux/chrome/deb/dists/stable/Release の取得に失敗しました  期待されるエントリ 'main/binary-i386/Packages' が Release ファイル内に見つかりません (誤った sources.list エントリか、壊れたファイル)
==> default: E
==> default: : 
==> default: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。

Google Chromeのリポジトリ取得に失敗しましたエラーを修正する | Ubuntuアプリのいいところ

これは、2016年3月に、32bit-LinuxへのGoogle Chromeのサポートが終了した後に発生しているエラーで、64bit版のUbuntuにおいても同じ現象が発生します。

というわけで、

sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

というふうに、アーキテクチャを64bitに指定することでエラーを回避できます。

参考

Hubotインストール

slackと連携するhubotを3分でインストールする(動画付き)

nodeインストール

Installing Node.js via package manager | Node.js

redisインストール

Ubuntu Linux 14.04 LTSにRedis 3をインストールする - CLOVER

iptables

mysql - Vagrant and MariaDB (provision) - Server Fault

Ubuntu 14.04 で OpenVPN - BLOG EX MACHINA

ubuntu - dpkg-reconfigure: unable to re-open stdin: No file or directory - Server Fault

Chromeのインストール

Ubuntu 14.04:Google Chrome インストール | よしまさのブログ