At DevOps Days Austin @mattray did an Openspace session on Omnibus which is a toolset based around the concept of installing an app and all of it’s prerequisites from source into a directory and then building a package ( either .deb or .rpm ) of that using fpm.
Having battled many times with OS Packages trying to get newer versions of Ruby, or Redis or other software installed and having to hunt down some random package repo or manually build from source this seems like an excellent idea.
To learn the basics I decided to build an omnibus package for fpm which helped me work out the kinks and learn the basics.
From there I moved onto something a little more ambitious… logstash, which is an awesome opensource project for log aggregation and searching.
Using Omnibus I took the Logstash .jar file and bundled in Redis, Kibana, Kibana3(+NodeJS), RabbitMQ, Elasticsearch along with all of their depedencies into a big fat package which installs to /opt/logstash and includes init scripts and default configs for each.
This gives us a really powerful platform to deploy logstash and all of its prequisites in a completely repeatable manner and not have to worry about the existing versions of Ruby, Java, etc. It also gives a super simple testing platform where a new user to logstash can install logstash with a single
rpm command and immediately be able to push logs to it via syslog or redis.
Read more about using and building the Logstash Omnibus package here