LoginSignup
38
42

More than 5 years have passed since last update.

Capistrano ですぐにデプロイできる Rails 環境を Ansible で自動構築する

Last updated at Posted at 2016-01-25

はじめに

最近 Ansible 2.0 がリリースされました。ちょうどバイト先の方でも Rails の開発環境用のサーバを構築する機会があったので、毎回構築するのは面倒ということも有り、Ansible で自動化してみることにしました。コードはGithubに公開 してます。Ansible のスクリプトに加えて、Capistrano や Unicorn の設定ファイルもおいてある (このへん) ので、コピペすればすぐに Rails をデプロイできる環境が作れる。。。はず!

( 追記: 自動化せずに手でやる場合は Ruby on Rails を Capistrano を用いて Ubuntu サーバ (with MySQL, Nginx) にデプロイした時のメモ が参考になるとおもいます。ここに書いてあるようなことが今回は Ansible 化されています。 )

Ansible 力(?) がまだ未熟なのでコードはリファクタリング出来そうだなーと思ったりしつつ、ここでは作ったコードの使い方を書きます。サポートしている OS は さくらVPS の Ubuntu 14.04 のみで(笑)、以下のものに関する環境が構築されます。

  • Ruby on Rails
  • Unicorn
  • MySQL
  • Nginx
  • Rbenv

あとは今後の必要に応じて追加すると思われる。ただ、あまり複雑怪奇なものにはしたくなくて、 staging 環境くらいのそんなに重要じゃない環境構築をサクッと作りたい時に使うくらいを意図しています。デプロイしたけど Unicorn が更新されない、Nginx が 502 エラーを返す、のような部分に今後時間を浪費をしないことが目標。

使い方

  • コードのダウンロード
git clone https://github.com/travelist/ansible-rails.git
  • Ansibleのインストール
pip install -r requirements.txt
  • デプロイ先のIPの指定
    • ansible/hosts のなかにあるIPアドレスを編集する
[rails]
000.000.000.000 # ここを編集してください

[vagrant]
192.168.33.3 # こっちは Vagrant 使ってデモ用なので無視で。
  • 設定ファイルの編集
    • ansible/group_vars/rails を編集する
ansible/group_vars/rails
---
rails:
  application: hello_world # アプリケーション名 (/var/www/hello_world ←)

ruby:
  version: 2.2.3 # Rbenv で指定した Ruby をインストールします

nginx:
  url: www.hello_world.com # URL 以外はテンプレートに書いてあります。

mysql:
  root_password: 123456789 # MySQL のインストール時に root パスワード決めるので。
  rails_username: rails # Rails 用にユーザ作ります
  rails_password: 123456789
  rails_database: rails_db # Rails 用にデータベース作ります
  • パスワードなしで sudo が可能か確認
    • SSHでデプロイするサーバーにログイン。 sudo がパスワードなしで実行できない場合は以下のコマンド実行
echo "username ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
  • Ansible の実行
    • 気長に待ちましょう。
ansible-playbook -i hosts rails.yml -u username

以上で Rails のデプロイができる最低限のサーバが構築されたとおもいます。(たぶん!)

裏では group_vars/rails に書いた設定ファイルを元に、rbenv を用いて指定した Ruby のバージョンのものをインストールNginx の設定MySQL の設定各種Rails を実行するのに必要なパッケージをapt-getしています。
この後は Capistrano や Unicorn の設定をすればデプロイができるはず。

rails_config ディレクトリ以下に Unicorn や Capistrano のサンプル設定ファイルがあるので、コピペして少し編集すればいろいろ設定する時間も短縮できるはず。

まとめ

Ansible を用いて Rails 環境の構築を自動化しました。
これまで(そしてこれからも) Rails のサーバ設定をすることがあったので、ここで自動化したおかげで今後の作業時間を減らすことが出来たと思います。
今後は必要に応じて修正したり、サーバの設定を変えるようなタスクを追加していこうとおもいます。

38
42
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
42