Skip To Main Content

Ansible-based Deployment Workflow for Modern Webapps and Websites

Posted by Adam Sontag

Nov 18 2015

Illustration by Christine An

Over the years, Bocoup has put a lot of open source work on the internet, and we’ve used a huge range of services to do so. In early 2014, it was possible to find our efforts hosted on Dreamhost, Media Temple, Linode, Github Pages, Rackspace, Heroku, DigitalOcean, Amazon, and more.

Recently, we finished the process of migrating all of our projects to AWS. In doing so, we took the time to standardize the deployment and configuration management of each using Ansible.

As a byproduct of this work, our ops team created a baseline Ansible configuration that’s ideal for getting a static site, single page app, or simple web service deployed on Ubuntu, served with nginx. With a little help from Vagrant, it can spin up a matching development environment too.

We’re pleased to share this resource, which we’ve dubbed the Modern Web Development Workflow, at deployment-workflow.bocoup.com. It’s used to deploy Bocoup.com, CSSConf, OpenVis Conf, Boston.js, Johnny-Five and more!

Why should I use it?

Learning the nuances of configuring servers, build processes, and deployment pipelines can take years. Without understanding and automating these configuration steps, the act of shipping the smallest project can be an intimidating endeavor.

Additionally, having your deployment configuration build your local development environment makes it a breeze to onboard new contributors.

While there are loads of fantastic offerings that abstract away the complexity of hosting a simple website or web service (Github Pages, Heroku, etc), we chose to standardize on something that isn’t provider-specific. We can point our Ansible configuration at any Linux host and have a service running in a matter of minutes.

Is this for me?

If you’re a developer who maintains a website hosted on a server you’ve configured manually because you didn’t know there was any other way, this resource has the potential to be incredibly empowering. This is doubly true if you don’t feel you have a firm grasp on the work you’ve been doing.

If you take the time to adapt this workflow to your project, you’ll have a completely transparent deployment process and a defined place to record the arcane configurations you likely spent hours searching for (and then promptly forgot).

FAQ

How can I contribute to this project?

As mentioned earlier, this is an internal Bocoup resource. We are sharing it with the community as a starting point. At the moment, we are not actively maintaining the repository beyond our own use. However, we are looking for contributors to the project who are interested in helping us make it more general for the wider developer community.

This is a great—I’m interested in learning more. What’s next, Bocoup?

We’re in the process of writing a two-hour workshop for on-boarding engineers with no ops experience. We’ve dubbed it Learn Deployment.

If you’d like to attend a workshop, sign up, and we’ll let you know when it’s ready!

Comments

We moved off of Disqus for data privacy and consent concerns, and are currently searching for a new commenting tool.

Contact Us

We'd love to hear from you. Get in touch!