Pocketops offers you to configure your vanilla Ubuntu box as a Rails server with deployment. Pocketops uses Ansible to configure your remote server.
After including pocketops in your Rails app, you have the pops CLI
to help you with your deployment.
$ pops init # create a deploy user and lock down root
$ pops install # install and configure packages
$ pops deploy # deploy current app
$ pops restart # restart passenger process (after updating env variables, etc.)You can also control environment variables on the server (Heroku style):
$ pops config:set RAILS_ENV=staging
$ pops config:get
$ pops config:unset UNUSED_VARIABLEPocketops depends on Ansible, which needs to be installed separatly:
Linux:
Install Ansible with your distro's package manager, i.e. apt-get install ansible.
On OS X run:
brew install ansibleThen head over to your Rails project and add this line to your application's Gemfile:
gem 'pocketops', git: 'https://github.com/mpm/pocketops.git'And then execute:
$ bundle
Run
$ pops initWhich will guide you though creating config/pocketops.yml.
You need a server with Ubuntu 14.04 where you can log into as root via
public key authentication.
Pocketops will lock down ssh login for the root user and create a
rails user with sudo privilegs. Store the sudo password somewhere
(you'll need it in the next step).
Then, Pocketops will configure the server for you by running:
$ pops installafter this is done, deply your app with
$ pops deployThis is work in progress. The server setup might totally change before we approach version 1.0.0.
- Use
foremanto run a localProcfileinstead of using passenger. - Install redis so sidekiq can be used.
- Clean up current entanglement with rails_env
- Clean up Ansible playbook, use consistent variable names and declare dependencies.
- Support letsencrypt automatic SSL certificate generation
- Restart server after variables are updated
- Allow adding/removing keys from authorized_keys via
popsCLI - More automation (
pops initandpops deployshould be one task if possible), detect custom playbooks in the Rails project automatically (currently loadable withpops custom).
After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/mpm/pocketops. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.