/ansible-rails_deploy

Deploy Rails applications using Ansible and DebOps

Primary LanguageShellGNU General Public License v3.0GPL-3.0

DebOps project rails_deploy

Travis CI test-suite Ansible Galaxy

debops.rails_deploy role allows you to easily setup infrastructure capable of running Rails applications. It removes all of the headaches associated to setting up a secure Rails app that is ready for production so you can concentrate on developing your app.

High level goals

  • Setup an entire rails app server with 1 line of configuration with sane defaults
  • Optionally and easily separate your app servers, database and worker into multiple servers
  • Quickly and easily switch between popular default databases and backend servers
  • Be as secure as possible and adhere to as many best practices as possible

Backups and logging

  • Postgresql runs a daily backup with daily/weekly rotation
  • Both your backend server and background worker get logged to 1 logrotated file
  • The rails process gets sent to syslog.user

System level minutia

  • User accounts, permissions and ssh keys are automatically managed
  • Paths such as logs, pids and sockets are automatically managed

Deploy features

  • Automatically set deploy keys to github/gitlab with 1 line of configuration
    • This leverages their API, all you have to do is supply their token
  • Keep track of your schema file and config folder's mtime in local facts
    • This allows the deploy task to attempt to guess if your server needs a full restart or a quick reload
  • Only run database commands from a single master app server
    • This master is defined by simply being first in the group list
  • Various options to turn certain features on/off
    • A few examples would be database creation, migration and force restarting your server
  • Add custom services which get restarted/reloaded at the end of the deploy cycle
    • If you have a SOA setup this could be handy
  • Add and remove custom tasks at various points in the deploy
    • By default it is set to precompile assets and clear the /tmp cache
  • Optionally swap a static deploy page in/out during the deploy cycle

Security

  • Secure passwords are managed automatically for your database
  • Ports are blocked and only whitelisted for IP addresses/masks that you specify
  • SSL is enabled by default but can be turned off if you really don't want it
  • Self signed SSL certs are automatically managed for you
    • Changing to properly signed certificates is a breeze

Installation

This role requires at least Ansible v1.7.0. To install it, run:

ansible-galaxy install debops.rails_deploy

Documentation

More information about debops.rails_deploy can be found in the official debops.rails_deploy documentation.

Role dependencies

  • debops.etc_services
  • debops.redis
  • debops.nginx
  • debops.nodejs
  • debops.mysql
  • debops.ruby
  • debops.monit
  • debops.secret
  • debops.postgresql

Are you using this as a standalone role without DebOps?

You may need to include missing roles from the DebOps common playbook into your playbook.

Try DebOps now for a complete solution to run your Debian-based infrastructure.

Authors and license

rails_deploy role was written by:

License: GPLv3


This role is part of the DebOps project. README generated by ansigenome.