Chef Capistrano Deployment Tuning

Chef Capistrano Deployment Tuning

Closed - This job posting has been filled and work has been completed.

Job Description

We build instances with Chef. We deploy code via Capistrano. We use thin or unicorn as web servers.

I've got a set of functional chef cookbooks and capistrano recipes that must be made more reliable for web app deployment on AWS. Simply put I should be able to create new instances after your work is done and there are few headaches.

Therefore, I'm looking for a knowledgeable individual to augment the team that can satisfactorily deliver the following:

Chef-solo template (solo.rb) / Chef-server template (knife.rb). We use one or the other depending on what we're doing.

Integrate monit into the existing suite of cookbooks. Provide documentation based on your experience to tune it to listen and restart. We're also open to bluepill.

Successfully build Rubies via rbenv-cookbook. We manage rubies via rbenv. We use pretty bare instances on AWS and need to install rbenv. Make it happen.

Integrate a Postgres cookbook. Document how to set up master-slave replication. Ensure it starts every time a new instance is deployed and a 'db' user can access the db.

Successfully implement Nginx as a cookbook, ensuring it starts every time a new web server instance is deployed.

We've got some in house cookbooks we use that can be tuned to ensure based on the changes you make.

It goes without saying, given a type of node (app, db, web) we should be able to create a user via a data bag and use the service. I will personally ssh into an instance for each role (currently deployer and db) and expect to be able to do that without requiring a password after authorized_keys are established. I then need to be able to use the service (e.g. db) where appropriate.

We use knife (and on occasion knife-solo) for deployments.

This task should be failry simple as it just net-scp's stuff to the boxes you will create. Be sure to tune the existing scripts so it only takes a cap production deploy / deploy:update to get things up and running.