/opsworks-web-python

OpsWorks deployment cookbooks for plone web apps (buildout, Django, Plone)

Primary LanguageRuby

Cookbooks for Deploying Python Web Applications on AWS OpsWorks

This repository contains cookbooks to assist with deploying python web applications (specifically buildout based applications and Django applications, along with some special helpers for deploying plone) on AWS OpsWorks. It uses OpsWorks Chef 11.10 and Berkshelf support to pull in required cookbook dependencies. See the included cookbooks (opsworks_deploy_python and plone_buildout) for documentation on their use.

Deploying with Your Own Cookbooks

The simplest way to use these cookbooks as the basis for your own cookbooks is to fork this repository and add your cookbook to it.

Ideally, you would be able to simply include the Berksfile from this repo in your own custom cookbooks repostory and add the cookbooks to it. However, the AWS cookbooks these cookbooks depend on cannot be easily resolved by Berkshelf. I hope to find a better solution for extending these cookbooks soon.

Testing your Deployments and Recipes Locally

Depending on the complexity of your deployment, you may be able to test your deployment and any custom recipes using vagrant, which has built-in support for chef-solo and Berkshelf server provisioning. There is an included example Vagrantfile, which demonstrates such an example configuration. The example Vagrantfile runs the example Plone 4.3 buildout and sets up mock layers to connect functionality. You'll need to modify the Berksfile when testing to explicitly pull in the OpsWorks cookbook dependencies, by uncommenting the commented section at the bottom.

You will need to install the vagrant-berkshelf plugin which requires ChefDK to be installed, and the ChefDK path (/opt/chefdk/bin) must be added at the front of your PATH. Then you must install the required vagrant ubuntu box and plugins:

export NOKOGIRI_USE_SYSTEM_LIBRARIES=true
vagrant plugin install vagrant-berkshelf
vagrant plugin install vagrant-vbguest

Install an appropriate virtual box:

vagrant box add precise64 http://files.vagrantup.com/precise64.box

or

vagrant box add ubuntu/trusty64

you will need to edit the Vagrantfile to point to the correct box. Finally:

vagrant up