VagrantとPuppetでConfluenceのセットアップ

# はじめに

お仕事関係でConfluenceを触る／カスタマイズする機会が出てきました。

単純にWebからの操作だけでは判らない点が出て来たり、本番をいじったりはできない状況になったため、Vagrantを使って実験環境を作れないか考えた次第です。

# やりたいこと / やらないこと

やりたいことは、こんなこと。

* Confluenceの起動環境を確認したい。
 * 標準で、どんなバイナリ、ソース、設定ファイルが配置されるのか確認したい。
* 本番はいじれないので、実験環境でプラグインの追加や、動作確認をしてみたい。

やらないのは、こっち。

* 実運用向けのDBのセットアップ、フロントエンドのWebサーバ（ApacheとかNginx)の設定。
* 自動起動 (init) の設定。（起動はrootで行います）

# あまり手間をかけずにインストールできる方法は？

以前、「DockerでJIRAを上げてみる」というPOSTをした通り、JIRAは試してたのですが、起動と初期セットアップはできても、なぜか立ち上げ直すと上手く行かなかったので、Dockerは止めておくことにしました。
（Dockerで立ち上げた場合は、多分、アプリケーションの自動テストを通し、終わったら消す…といった作業にはには向いていると思うのですが）

Confluenceインストール、ライセンスのアクティベーション、基本設定の実験といったステップで、スナップショットが適宜取れればいいので、素直にVagrantでセットアップすることにしました。

さて、ちょこちょこインストール手順を探したのですが、Dockerfileみたいに手順がまとまったものが無い！
（index.docker.ioには、まだConfluenceは登録されていません）

なるべく大掛かりなものはやりたくないのですが、時間も短縮したいので、やっと見つけたのが、こっちのリポジトリ。

* https://github.com/lwndev/confluence-vagrant-install (confluence-vagrant-install)

よく見ると、なにやらChefではなくてPuppetでプロビジョニングをするようです。Chefも良くわかってませんが、Puppetはもっとわかりません。
しかも、Vagrant boxは **Ubuntu** です。(さらにわかりません…)

ですが、そこで躊躇する余裕が無いので、このソースの恩恵にあずかることにしました。
結果的には大変助かりました！

# プロビジョニングのソースのカスタマイズ

まず、ソースを見てみると、オリジナルのConfluenceのターゲットが5.1.3になっていました。
さすがにこれは古すぎ。
最新のバージョンにあわせたほうがいいので、5.4.4を取得するように修正しました。

おかげさまで、boxの中から面倒な設定をしなくとも、Confluenceのインストーラーをダウンロードできるようになりました。

修正したソースは、GitHubに上げておきました。試してみたい方は、よかったらどうぞ:)

* https://github.com/akiko-pusu/confluence-vagrant-install/tree/5.4.4 
 * 5.4.4ブランチです。


# セットアップの結果をみてみよう！

Confluenceのインストールスクリプトの処理が完了すると、うまく行ったらブラウザから設定をすすめます。
今回のVagantfileの設定だと、192.168.33.11 としてホスト側からアクセスできます。

ConfluenceはTomcat上で稼働しているのですが、ポートは **8090** になりますのでご注意下さい。
うまく設定を進めて、アクティベーションが済むと、こんな画面に。


![setup-done.png](https://qiita-image-store.s3.amazonaws.com/0/27976/478747e2-a8ad-83c3-0a4d-af1e7793291e.png "setup-done.png")

あとは、アカウントを登録してみたり、言語を切り替えたり、スタイルを調整してみました。
うまく動いているようです！

![dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/27976/f3b2b3f2-77f6-b3b0-8f19-b1cc64f73d2b.png "dashboard.png")

## ログはどこにあるのかな？

今回のケースだと、インストールしたOSから見て、/vagrant/ 以下に、puppetで取得したバイナリやConfluenceのHOMEが保持されます。

```source:bash
vagrant@precise32:/vagrant$ cd /vagrant/
vagrant@precise32:/vagrant$ ls -F
atlassian-confluence-5.4.4/  confluence-home/  manifests/  modules/  README.md  Vagrantfile

vagrant@precise32:/vagrant$ cat atlassian-confluence-5.4.4/confluence/WEB-INF/classes/confluence-init.properties
confluence.home=/vagrant/confluence-home

vagrant@precise32:/vagrant$ ls /vagrant/confluence-home/logs/
atlassian-confluence.log
```

ということで、VirtualBoxを稼働させているホスト側からも、ファイルとしてアクセスできます。
（Vagrantfileを記載しているディレクトリは、通常はゲストOS側の/vagrant/ というディレクトリにマウントされるため）

ホストOS側から、ログをtailして出力を確認することができます。

また、この設定だと、confluence-homeその他のデータがホスト側に書き出されますので、稼働中にこちらのディレクトリは消してしまわないように。

# 再起動して確認しよう！

セットアップして喜んだものの、再起動するとうまく動かない…というのが結構あったので、念のため確認します。

再起動しても、javaのプロセスは勝手には上がっていませんので、start-confluence.sh を実行します。
こちらも、/vagrant/ の下にあります。

```
vagrant@precise32:~$ sudo /vagrant/atlassian-confluence-5.4.4/bin/start-confluence.sh 

To run Confluence in the foreground, start the server with start-confluence.sh -fg
executing as current user
If you encounter issues starting up Confluence Standalone, please see the Installation guide at http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide

Server startup logs are located in /vagrant/atlassian-confluence-5.4.4/logs/catalina.out
Using CATALINA_BASE:   /vagrant/atlassian-confluence-5.4.4
Using CATALINA_HOME:   /vagrant/atlassian-confluence-5.4.4
Using CATALINA_TMPDIR: /vagrant/atlassian-confluence-5.4.4/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /vagrant/atlassian-confluence-5.4.4/bin/bootstrap.jar
Using CATALINA_PID:    /vagrant/atlassian-confluence-5.4.4/work/catalina.pid
Existing PID file found during start.
Tomcat appears to still be running with PID 1571. Start aborted.
```

## TimeZoneを修正しておきましょう

うまく上がったところで、なにやら日付がおかしいかも…とおもったら。
boxのタイムゾーンはJSTになっていないから。

```
# dpkg-reconfigure tzdata
```

で修正しておきましょう。

さて、基本はこれでOK。
APIを利用してみたり、プラグインが書けるようになれればいいんですが^^;

# おまけ：プロキシで困った場合

なお、プロキシを通さないといけない環境だと、Puppetのプロビジョニングのスクリプトを実行すると、Access Deniedがたくさん出るかもしれません。

つまり、boxで上がったUbuntuが、プロキシを通さないとお外にリソースを取りに行けない状態です。

そういう場合は、vagrantの[vagrant-proxyconf](https://github.com/tmatilai/vagrant-proxyconf)プラグインを追加してみて下さい。お勧めです！
こちらは、bounscaleさんの下記の記事を参考にさせていただきました。

* [VagrantのかんたんProxy設定](http://qiita.com/bounscale/items/7b8a462504f7d6c91e99)