というわけで今日はCloudGarage上にJIRAを構築していこうと思うわけです。
CloudGarageではインスタンスが3台(以上)立ち上げられるので、以下のような構成を作ることにします。
  1. JIRA(とConfluence)用のDB(PostgreSQL)インスタンス
  2. JIRAアプリケーションを実行するインスタンス
  3. Confluenceアプリケーションを実行するインスタンス
  4. 各インスタンスはMackerelで監視
構築に使用した設定ファイル(のテンプレート)等はGitLabに置いてあります。




まずはJIRAのデータを置いておくDB用のインスタンスを構築していきます。

環境

PostgreSQLをがインストールできればいいのでOSはなんでもいいのですが、dockerでサクっと立ち上げて楽したいのと、RancherOSを使ってみたかったという理由でRnacherOSで構築することにします。
  • OS: RancherOS
  • 接続許可ポート:SSH(22)、PostgreSQL(5432)
  • SSH Key:CloudGarageのコンソールからは設定できないが、RancherOSのインストール時にKeyが必要になるので作成しておくのがおすすめ。自前のKeyでやる場合はご自由に
Mackerelでの監視内容
mackerel-agentもdockerコンテナで動かすことにします。普通に動かすのに追加で以下のプラグインで取れるメトリックも取得することにします。(dockerコンテナにはあらかじめ公式プラグイン集が入ってるので楽ですね)
デフォだとlocalhostに接続しにいくみたい?かつREADMEに接続先ホストの変更方法が書いてないのでソース読んで確認したところ、-hostname=で指定してやればよさそうです。
/var/run/docker.sockをマウントしてやらないとメトリックを取得できないので注意

手順
RancherOSはインスタンス作成直後はISOブートした状態なのでインストールを行います。
インストール方法はCloudGarageでRancherOSを使ってDocker imageを動かしてみたってQiitaの記事で解説されているので省略。

RancherOSがインストールできたらおもむろに
$ sudo ros service enable server
を叩いてrancher serverを起動... と行きたいのですが、rancher serverはメモリ大食いなのでやりません。


で、本来ならばCustom System Serviceを作ってPostgreSQLを起動させるといいんでしょうが、今回は手を抜いてdocker-composeをインストールすることになります。
「なんのためのRancherOSだ」と言う声が聞こえてきそうな気がしますが気にしません。

docker-composeのReleaseページからバイナリを取得してパスの通った場所に配置します。
docker-composeのReleaseページにもインストール方法は書いてありますが、RancherOSにはデフォでcurlがなかったり/usr/local/binがなかったりするので、wgetを使って/usr/binに配置するようにします。
$ wget -O docker-compose https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m`
$ chmod +x docker-compose
$ sudo mv docker-compose /usr/bin
$ docker-compose -v
docker-compose version 1.16.1, build 6d1ac21
docker-compseが動いたら、ryosms/jira-on-cloudgarageのpostgresディレクトリ以下のファイル群一式をサーバーの適当なディレクトリに送り込みます。
  • postgres.env.templateをpostgres.envにリネームして、JIRA用DBユーザーのパスワードを設定します
  • mackerel-agent.conf.templateをmackerel-agent.confにリネームして、mackerelのAPI KEYと、PostgreSQLのJIRA用DBユーザーのパスワードを設定します
あとはおもむろにdocker-composeで起動すればPostgreSQLが起動して、mackerelがメトリックの監視を始めます。
$ docker-compose up -d

次はJIRAのインスタンスを構築していきますが、それはまた別の日に