WARNING This is pre-release, unstable, untested code. Use at your own risk
The aim of this project is to provide an heroku-like, black-box container for ruby applications, whose infrastructure is entirely managed by puppet.
It currently supports installation of a ruby interpreter through rbenv in a sandbox user directory; creation of per-user sandboxes for applications; God installation as process manager; setup of systemwide services such as starling and libreoffice; installation and management of Postgresql roles and databases for apps, and wrapping it everything up on multiple servers.
Each server must define two parameters: $bruno_env
and $bruno_role
.
The first may contain whichever environment you like, such as staging
or production
, while role
may contain one or more of the following
tags: server
, worker
or database
.
server
roles get nginx and application servers (unicorn
&thin
) installed and thedatabase.yml
configuration file generatedworker
roles get libreoffice, starling, and resque installed and thedatabase.yml
configuration file generateddatabase
roles get postgresql installed and configured, and get new users and databases created as needed.
Each deployed app defines its resources through a standard puppet .pp
manifest file.
-
git post-receive hook
- on the first time ever the app is deployed, parse an app Manifest
and then generate the
app.pp
file and manually trigger a puppet kick - on subsequent runs, then launch the buildpack and restart the app server of choice.
- on the first time ever the app is deployed, parse an app Manifest
and then generate the
-
application shell
-
log viewer
-
status CLI
-
Tests and documentation 😉
- Tested only on Puppet Enterprise 2.5 running on OpenSuSE 11.4 (sorry)
- Requires the puppet dashboard ENC
- A role can be assigned only to a single node - you cannot have two "database" servers as of now