今回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 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/11
- メディア: 大型本
- この商品を含むブログ (5件) を見る
利用するソースはこちらです。
実行方法
まずは実際に構築するところから。
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側のブラウザから以下のアドレスに接続します。
既にテストデータも投入されているので、そのまま本の演習に入ることができます。
Ansibleの設定について
rbenv
このrbenvが一番くせものでした。最後に付けている記事やマニュアルなどを参考にしました。
特にこちらは細かく見て参考にさせていただきました。
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
こちらの記事にも助けていただきました。
さいごに
Railsの勉強しようとして、思い立ってAnsible使ったけど、環境構築だけで疲れてしまった。。。