礎によるRailsアプリのデプロイテンプレート作成
礎(いしずえ)は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にも対応します。
礎のインストール
- 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
- bundle installでインストールし、gereratorでishizueをinstallする
$ bundle install
$ bundle exec rails g ishizue:install
- 構築後の環境にログインするための公開鍵をmisc/ssh_keysフォルダにコピーする
$ cp ~/.ssh/id_rsa.pub misc/ssh_keys
これで準備は完了です。
礎を試す
デプロイテンプレートにはVagrantfileも含まれているため、それを使ってCentOS7のboxにインストールしてみます
- 作業ディレクトリを
misc/itamae
に移し、仮想マシンを作成します
$ cd misc/itamae/
$ vagrant up
仮想マシンは Vagrantfile
の中に定義されている通り 192.168.33.10
のIPで上がってきます。上がってこなかった場合は、後述する別ホストへのデプロイを試してください。
- 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 付与するとデバックログが出ます。
- 実行終了後はWebサーバーからのアクセスが可能になります。
Main: http://192.168.33.10
Monitoring: http://192.168.33.10:8282
別ホストへのデプロイ
192.168.33.10
以外にデプロイする場合は、下記の手順を踏んでください
- Capistranoの設定ファイルを編集する。
$ vi misc/capistrano/config/deploy/staging.rb
server 'YOUR_SERVER_IP', user: 'deploy', roles: %w{app db web}
- その後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