AnsibleでRailsをデプロイ
インターンシップで構成管理ツールのansibleを使う機会があり,それから愛用するようになった.
ansibleではyaml形式でplaybookと呼ばれるレシピを書き,それをssh経由で実行する.
(操作を抽象化するモジュールが標準で多く準備されている.ドキュメント参照.)
chefのようにクライアント側の用意が必要なく,シンプルなのが良い.
今回は,学生プロジェクトで開発中のrailsアプリをデプロイするplaybookを作成してみた.
前提条件
デプロイ先となる本番サーバには,nginxとDB(postgreなど)はインストール済とする.
作成したplaybook
hostsにデプロイするrailsのgitリポジトリとプロジェクト名,本番DBのパスワードを書く.
ansible-playbook -i hosts deploy.ymlを実行すると,以下の順で処理が走る.
デプロイ用Rakeタスク
rake deploy:ansibleで実行できるようにRakeタスクも作成した.
- lib/tasks/deploy.rake
namespace :deploy do desc 'Deploy using Ansible' task :ansible do hosts = "#{Rails.root}/playbook/hosts" playbook = "#{Rails.root}/playbook/deploy.yml" system "ansible-playbook -i #{hosts} #{playbook}" end end
まとめ
ちまちま開発して頻繁にデプロイするので,自動化で便利になった.
あと,ヒューマンエラーが無くなるのも良いかな.
これからもansibleを使ってガンガン自動化を推し進めていきたい.