LoginSignup
8
8

More than 5 years have passed since last update.

focuslight の docker imageを多数起動するansible playbookを書く

Last updated at Posted at 2014-02-10

focuslightをdockerを利用して多数起動する

focuslightという
GrowthForecastとのAPI互換を持つ
Ruby実装のツールがリリースされていたことを最近知り、興味が合ったのでdocker image化してみた。

docker indexに登録済みなので、
dockerで使いたいという方は以下の手順で試せる。

> docker pull futoase/docker-focuslight
> docker run -p 3000:80 -d futoase/docker-focuslight

で、最近chefの代わりに使いたいなと思って気になってるansibleの練習がてら
focuslightを1つのインスタンス内で多数起動させる、
というansible playbookを書いてみた。

ansible playbook ソース

ソースはここにあります。

動作を確認するための下準備

MacOS X であるなら、以下の手順を踏めば終わり。

動作テスト

以下の手順でリポジトリからソースを取ってきて
コマンドを実行すれば終わるようにしてある。

> vagrant up --provision

ansible playbook内で、
以下のホスト名とVagrantで立ちあげたゲストマシンの
IPアドレスを結びつけるために/etc/hostsに書き出す。

sudo echo "192.168.33.200 focuslight focuslight2 focuslight3 focuslight4 focuslight5" >> /etc/hosts

出来上がりイメージ

こんな形でfocuslight, Vagrant boxの環境ができあがる。

focuslight.png

focuslight個別のdocker container内で
nginxでリバースプロキシを利用するようにしている。

アクセスしてみる

早速それぞれのfocuslightインスタンスに対してアクセスしてみる。

> open http://focuslight/

スクリーンショット 2014-02-10 19.58.56.png

> open http://focuslight2/

スクリーンショット 2014-02-10 19.59.30.png

別々のdocker containerに保存されているか確認する

curlコマンドでhttp://focuslight/のAPIを叩いてみる。

> curl -F number=10 http://focuslight/api/socialgame/member/register

スクリーンショット 2014-02-10 22.25.30.png

うまくいった。

> curl -F number=200 http://focuslight2/api/mainichi/ga/nichiyoubi

スクリーンショット 2014-02-10 23.05.57.png

別々のdocker imageを利用して立ちあげたdocker containerに対して
APIを叩いても大丈夫なようだ。

一応Vagrantホスト側のディレクトリをdocker focuslight containerで
立ちあげているdockerマシンの/root/focuslight/dataディレクトリとして
使える形でansible playbookで作成している。
ので、docker containerを再起動してもデータが消えることはない。

dockerで複数のアプリケーションを立てる意味

immutable infrastructureとか言われてて、
dockerが注目されてる。

アプリケーションのデプロイに関する事前動作確認でも、
staging環境をサーバ単位では用意せず
productionとあいのりした形で準備できるかもしれない。

または今回のfocuslightのような
データのグラフ可視化ソフトウェアについて
サービス別(ゲームだとしたらタイトル別)に
docker containerを立てることで
タイトル別のグラフはdocker container別に管理することが
できるようにする、とか。MySQL DBの切り分けとか
考えなくて良いと思うし。

ansibleを利用する意味

chefで最初サーバの冪等性を保証する形で
レシピを書いていたけど、適応するレシピの量が多いとゴテゴテしてきてしまう。
notifiesを利用して実行順序保証がだるい。

ansibleが最適解かはわからないものの、
今のところは良いんじゃないかなと思った。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8