Building a Virtual Appliance – Repeatably

We were recently faced with the problem of how to ship and support a complicated piece of server software. We needed the software to be installed on a customer’s existing infrastructure and were nervous about depending on them to have experts in house. We decided to build a virtual machine “appliance” style packaging and to […]

Using Vagrant AWS with Capistrano

Vagrant 1.1 was recently released, adding support for virtualization providers other than VirtualBox. Among the providers now available is one for AWS. In switching my Vagrant workflow from VirtualBox to AWS, I ran into a problem; and in solving it, I discovered a better way to integrate Vagrant with Capistrano. 1. Vagrant Setup Vagrant 1.1 […]

Easier Capistrano Deploys from GitHub with ssh-agent

One great option for Capistrano deploys out of git is to use an ssh-agent. The agent will forward your own SSH keys from your development machine and make them available during deploys without ever needing to pollute your production servers with your keys. GitHub has a great getting-started document here. While it’s a great idea, […]

Chef Solo with Capistrano

Not that long ago, I wrote about a standalone Puppet pattern that Mike English and I use in conjunction with Capistrano to provision and manage our server configurations. While we still make use of Puppet, we’ve also added Chef to our repertoire. Similar to Puppet, Chef allows for a client/server model in which a Chef […]

Deploying from Git with Capistrano

Justin and I provide operational support to the SME Toolkit project, an education portal for small to medium sized enterprises in developing countries sponsored by the IFC (which is the private sector development branch of the World Bank Group). Recently, the source code for the Rails-based web application was migrated from Subversion to Git. This […]

Standalone Puppet with Capistrano

Mike English and I frequently make use of Puppet to provision servers and manage server configurations. It is very convenient to be able to setup a server (while simultaneously documenting its configuration) by writing Puppet modules and manifests and then simply running the Puppet agent. For larger setups, we have used the Puppet agent/master model […]