AnsibleでRubyOnRails/CentOS7のサンプルアプリ動くとこまで自動構築

今回Ansibleで構築する環境のバージョン情報は以下の通りです。

S/W バージョン 備考
CentOS 7.2 Vagrantで取得
ruby 2.0.0-p353 変数で変更可
rails 4.2.6 変数で変更可
nodejs 0.10.x -
mariadb 5.5.47 -
ansible 2.0.2.0 -

若干バージョンがずれているのですが、一応、こちらの本の勉強環境を構築する目的でした。

Ruby on Rails 4 アプリケーションプログラミング

Ruby on Rails 4 アプリケーションプログラミング

利用するソースはこちらです。

github.com

実行方法

まずは実際に構築するところから。

Vagrantインストール

Vagrantで立てた環境に作業してますが、インストールは省略します。

Ansibleインストール

まずは手持ちのMacBookにAnsibleインストールします。pythonのバージョンも2.6以上なのでBrewでサクッとインストールします。

$ python --version
Python 2.7.10
$ brew install ansible

インストールされたバージョンは2.0.2.0です。

$ ansible --version
ansible 2.0.2.0
  config file = 
  configured module search path = Default w/o overrides

環境構築

gitからソースコード持ってきてvagrant upします。仮想マシンの構築後にAnsibleのPlaybookが自動で実行されます。

$ cd <your work dir>
$ git clone https://github.com/yomon8/RoRSampleAppOnCentOS7.git
$ cd RoRSampleAppOnCentOS7
$ vagrant up

WEBrick起動

Playbookの実行が完了したらログインして、

$ vagrant ssh

WEBrick起動します。

$ cd ~/railbook
$ rails server --binding 192.168.33.11

PC側のブラウザから以下のアドレスに接続します。

http://192.168.33.11:3000/books

既にテストデータも投入されているので、そのまま本の演習に入ることができます。

f:id:yomon8:20160505120310p:plain

Ansibleの設定について

rbenv

このrbenvが一番くせものでした。最後に付けている記事やマニュアルなどを参考にしました。

特にこちらは細かく見て参考にさせていただきました。

github.com

Task毎に自分がどのユーザなのか、パスが通っているかなどをデバックしていくと何とか動かすことができるようになりました。

Rails

最初はVersion 4.0.2にしようとしたのですが、最新のmysql2のGemとの相性が悪いらしく、4.4.6に変更しています。

rakeコマンドなどはrbenvとの絡みがあり、パスの指定など注意が必要でした。

Nodejsについて

nodejsのパッケージインストールはepelからもできますが、今回はこちらを参考にしてます。警告出るとおりget_urlモジュールでもいけたのかもしれません。

Installing Node.js via package manager | Node.js

Gemモジュールについて

rbenvを利用している環境だとGemモジュールにも設定を加える必要があります。

executable

まずgemコマンドの場所が違うのでそれを設定します。

executable: .rbenv/shims/gem
user_install

そして、user_installがデフォルトはyesになっています。これはgemに「--user-install」オプションを付けて実行したのと同じになり、~/.gem配下にGemがインストールされてしまいます。ここはパスが通っていないのでパス通す必要があります。

Frequently Asked Questions - RubyGems Guides

以下のように、このオプションをnoにすると通常のインストールと同じ状態になります。

user_install: no

参考URL

公式マニュアル。Ansible設定自体はシンプルなので余計にマニュアルが役立ちました。

Ansible Documentation — Ansible Documentation

こちらの記事にも助けていただきました。

qiita.com

さいごに

Railsの勉強しようとして、思い立ってAnsible使ったけど、環境構築だけで疲れてしまった。。。