久々にVagrantでRails鯖を構築する必要があったので、勉強がてらAnsibleで作ってみました。Chefに比べるとシンプルで学習コストが低いのが素敵です。
でもChefにせよ、Ansibleにせよ、ハマリポイントがしっかり用意されていて、ちょっと手こずりました。もうちょっとフレキシブルに書けるようになりたい!
7/31 11:50 AWSのAmazon LinuxでもAnsibleの動作確認をしました。Ansibleの良さを実感中!
🏈 バックエンドの選択
バックエンドはVagrantかAWSのどちらかを使えます。
(検証しているのがAWSのAmazon Linuxだけという意味です。実際は、CentOS系ならある程度使えると思うっす)
(A) Vagrantを使う場合
Vagrantのインストール
Vagrant 公式サイト
パッケージをDLしてインストール。
VirtualBox
VirtualBox 公式サイト
パッケージをDLしてインストール。
(B) AWSを使う場合
AWSでAmazon Linuxを使う場合はAWSのコンソールから、インスタンスを起動。
(CentOS系の鯖なら同様の方法でやれます)
🐯 Ansibleの導入
MacでAnsibleを使えるようにする最低限のコマンド。
# Pythonのインストール |
もう少しPythonの開発環境をしっかり構築したい場合は、拙著『Python開発環境構築 徹底解説[pyenv, Mavericks]』を良かったらご覧ください!
🐮 Ansibleの実行部分
バックエンドに(A) Vagrantを使う場合と、(B) AWSを使う場合の手順です。
まずは共通部分。『morizyun/vagrant-ansible-rails - GitHub』のコードを入手して、Vagrantでサーバを起動。
起動したサーバにAnsibleを実行するまでの一連の手順です。
git clone https://github.com/morizyun/vagrant-ansible-rails |
🐹 (A) Vagrantの起動、Ansibleの実行
chmod a+x set_vagrant.sh && ./set_vagrant.sh |
🎂 (B) AWS + Ansibleの実行
ansible/hosts_vagrant
を参考にしつつ、hosts_production
を作成して、AWSのIPとSSHキー(pem)のパスを設定。
設定画完了したら、次のコマンドを実行。
export ANSIBLE_HOSTS=./ansible/hosts_production |
👽 Railsのサンプルプロジェクトの作成
vagrant ssh |
🎳 ブラウザでのアクセス
http://192.168.33.10/
にブラウザをアクセスするとapp/
フォルダの中のファイルにアクセスできます。
😀 Vagrant Share
Vagrant Shareを使うとグローバルなURLを取得することもできます。
まずは『Vagrant Cloud』でユーザー登録。
次に次のコマンドを実行。
# Vagrant Cloudのユーザー名/パスワードを入力 |
最後に出てきたURLがグローバルにアクセスできるURL。『http://xxxx.vagrantshare.com』とか。
🚜 GitHubリポジトリ
今回のVagrantfileをGitHubにも作っておきました!
morizyun/vagrant-ansible-rails
🍄 Vagrant Upで「Failed to mount folders」が出る場合
Mountのエラーが出る場合はこちらを試してみるといいかもです。
# Vagrantにsshで接続 |
ちなみにこちらの記事を参照させていただきました!
🚕 参考リンク
Vagrantでvagrantのデフォの秘密鍵じゃなくて自分のいつもの秘密鍵を使えるようにするシェルスクリプト - Qiita
Vagrant CloudのVagrant Shareを試してみたら凄すぎて鼻血出た - 憂鬱な世界にネコパンチ!
Rails - CentOS6.xでbundle installが遅い場合の対処 - Qiita