Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

AnsibleでRails appが動く環境を作ってる

先日のほっかい道場にてAnsibleを学ぶモチベーションが高まったので、早速ドットインストールのAnsible入門をやりました。 ここでは、基礎的なAnsibleの使い方を学んで、LAMP構成の環境を作りました。

ふむふむ、なるほど、と思いRailsアプリケーションが動く環境を作ってみようと思いました。 仕事でもプライベートでもRails使うことが多いので、より実践的な感じですね! ひとまずガガッと作ってRails appが動くところまでできたので感想などつらつら書いてきます。

ソースコード

https://bitbucket.org/TAKAyuki_atkwsk/ansible-rails-work/src/f3a7dbd72091

サーバー構成

こんな感じで環境を構築してみます。Vagrantを使って立てたサーバーに対して、ローカルからAnsibleであれやこれや行うイメージです。 Rails appは別途デプロイツール(Capistranoとかminaとか)でデプロイします(詳細は割愛)。

ハマったところ

  • Vagrantで立ち上げたサーバーに対してplaybookを適用するときに、単純に ansible-playbook コマンドを実行してもうまくいかなかった。
    • Vagrantfile のなかで config.vm.provision "ansible" do ... のブロックを書いておくと vagrant provision コマンドで playbook を適用することができる。
  • rbenvの初期化コマンドを .profile に書き込むのだが、playbook適用ごとに毎回追記されてしまった。
  • playbook 適用時に rbenv コマンドを絶対パスで指定しないと実行できない?
    • パスが通っていない模様。
    • 厄介そうだったのでいったん放置した。
    • playbookをリファクタするときに解決したい。

やってみて

とりあえずymlにやりたいことを書いて置けば、あとはコマンド実行すればインストールや設定などいい感じにやってくれるのでカジュアルでいいなと思いました。 参考にしたplaybookを見ているとディレクトリ構成などちゃんとしているので、ドキュメント見ながらリファクタしていきたいです。 ひとまずはRails appが動く最低限の環境が整ったのでよしとしよう。

Try

  • playbookのリファクタ
    • best practicesなど参考にする
    • ベタ書き部分の変数化(ユーザー名、パス、Ruby versionなど)
    • role を理解する
  • nginx.conf の管理
    • unicorn使いたいのでその設定を管理したい
  • rbenv コマンド実行できない問題
    • ハマったところを参照

参考