先日のほっかい道場にて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適用ごとに毎回追記されてしまった。lineinfile
モジュールを使ってマッチするパターンの行がファイルに存在する状態を制御することにした。- https://github.com/leucos/ansible-rbenv-playbook を参考にした。
- playbook 適用時に rbenv コマンドを絶対パスで指定しないと実行できない?
- パスが通っていない模様。
- 厄介そうだったのでいったん放置した。
- playbookをリファクタするときに解決したい。
やってみて
とりあえずymlにやりたいことを書いて置けば、あとはコマンド実行すればインストールや設定などいい感じにやってくれるのでカジュアルでいいなと思いました。 参考にしたplaybookを見ているとディレクトリ構成などちゃんとしているので、ドキュメント見ながらリファクタしていきたいです。 ひとまずはRails appが動く最低限の環境が整ったのでよしとしよう。
Try
- playbookのリファクタ
- best practicesなど参考にする
- ベタ書き部分の変数化(ユーザー名、パス、Ruby versionなど)
- role を理解する
nginx.conf
の管理- unicorn使いたいのでその設定を管理したい
rbenv
コマンド実行できない問題- ハマったところを参照