🐥

礎によるRailsアプリのデプロイテンプレート作成

2015/09/07に公開

礎(いしずえ)はRuby on Railsで開発したアプリケーションのステージング環境構築を支援します。

礎でできること

下記のミドルウェアをインストールまたは設定するためのItamae cookbookテンプレートを作成します。

  • Nginx
  • MariaDB(10.1) Server
  • Redis
  • RVM
  • Capistrano
  • Monit
  • Munin
  • NTP
  • OpenSSH Server

※デプロイ先はCentOS6/CentOS7のみ確認できています

デプロイテンプレートはItamaeとCapistranoで作成されるため、作成後に好みに応じて編集することができます。
また、MuninやMonitがモニタリングするためのWeb画面のセットアップまで行うため、稼働状況の確認までできます。
redisおよびSidekiqの監視も含めているため、ActiveJob + Sidekiq + Redisにも対応します。

礎のインストール

  1. Gemfileに下記を追記する
Gemfile
group :development do
  gem 'itamae-plugin-recipe-rvm', github: 'tk-hamaguchi/itamae-plugin-recipe-rvm', require: false
  gem 'ishizue', github: 'tk-hamaguchi/ishizue'
end
  1. bundle installでインストールし、gereratorでishizueをinstallする
$ bundle install
$ bundle exec rails g ishizue:install
  1. 構築後の環境にログインするための公開鍵をmisc/ssh_keysフォルダにコピーする
$ cp ~/.ssh/id_rsa.pub misc/ssh_keys

これで準備は完了です。

礎を試す

デプロイテンプレートにはVagrantfileも含まれているため、それを使ってCentOS7のboxにインストールしてみます

  1. 作業ディレクトリを misc/itamae に移し、仮想マシンを作成します
$ cd misc/itamae/
$ vagrant up

仮想マシンは Vagrantfile の中に定義されている通り 192.168.33.10 のIPで上がってきます。上がってこなかった場合は、後述する別ホストへのデプロイを試してください。

  1. Itamaeを使ってインストールを実施します
itamae ssh -h 192.168.33.10 -u root --ohai roles/staging.rb --node-yaml=nodes/staging.yml
 INFO : Starting Itamae...
root@192.168.33.10's password:

仮想マシンのパスワードは『vagrant』が設定されています。実行に失敗する場合は何度かリトライしてみてください。-l debug 付与するとデバックログが出ます。

  1. 実行終了後はWebサーバーからのアクセスが可能になります。

Main: http://192.168.33.10

Monitoring: http://192.168.33.10:8282

別ホストへのデプロイ

192.168.33.10 以外にデプロイする場合は、下記の手順を踏んでください

  1. Capistranoの設定ファイルを編集する。
$ vi misc/capistrano/config/deploy/staging.rb
        server 'YOUR_SERVER_IP', user: 'deploy', roles: %w{app db web}
  1. その後Itamaeの実行時IPを変更先のIPに変更して実行する
$ cd misc/itamae/
$ itamae ssh -h YOUR_SERVER_IP -u root --ohai roles/staging.rb --node-yaml=nodes/staging.yml

Railsアプリのアップデートに追従する

Rails アプリをバージョンアップした時にはcapistranoの実行のみで対応可能です

$ cd misc/capistrano
$ cap staging deploy

http://192.168.33.10:8282 については、適宜Nginxの設定を書き直してください

Discussion