【Ubuntu】Hubotの開発環境構築をVagrantで自動化
Hubotを開発するための環境構築用のVagrantfile作りました。
ホストOSで起動しているクライアントからのリクエストがゲストOSで起動したHubotに飛ぶようになっています。
Slackがクライアントの場合でしか試せてませんが、他のクライアントでもいけると思います。
また、node-inspectorとChromeがインストールされるようプロビジョニングしているので、GUIでデバッグすることもできます。
なお、前提としてゲストOSはUbuntuデスクトップです。
以前上げた記事のBoxファイルをベースにしてます。
はまったこと
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_FRONTENDをnoninteractiveにしてインストールすることで解決できました。
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