DevOps side project - chef v puppet + vagrant + aws

So my side project is going to be an abstraction over some DevOps tasks with some opinion and hopefully best practise baked in with web and mobile/tablet clients to centrally manage these tasks, a nice reporting layer with data from various providers for developers and non developers to use. 

Ambitious I know but if it scratches my itch and helps me with my job then perhaps it will be useful for others.

I want to support more than just continuous delivery of .NET based apps to windows servers and to build on the knowledge I've gained so far and perhaps be less reliant on the tools that have helped me up to this point. 

For example deploying a Java, MySQL and Solr stack or a Ruby, Sinatra and MongoDB stack all with infrastructure as code in mind.

Chef vs Puppet

My "to read and learn about" list has for some time included  tools such as vagrant, chef and puppet, Chef and puppet do pretty much the same thing albeit in slightly different ways and are built on ruby and while not a language I've used in anger is nice to read and has plenty of resources available. Both tools have a good community and have cookbooks or sample configs for most things to get you started.


There isn't much to choose between them apart from a general feeling that Chef is more developer focused, does most of the work on the end nodes (actual machines) and has a steeper learning curve and puppet is more sys admin based and does more on the server side. 

Wether this is fair or not i do not know so being more developer by trade than sys admin i would  normally download both and see which is the best fit by trying the same basic tasks in both tools but this could end up a yak shaving excercise and I want to move as quickly as I can.

Amazon Web Services

So I've decided to just bite the bullet get cracking and pick Chef purely because my cloud provider of choice is Amazon Web Services and they have chosen Chef for its OpsWorks product and has resources for its other offerings cloudformation and elestic beanstalk.

If Amazon are investing infrastructure and time to it then so will I. 

Now with this decision made I re-read some of the documentation from Amazon and there are multiple solutions and API's that have come on leaps and bounds since I last looked and could really jump start my project. Everything from full control to a Heroku style system could be built however I do not want to build clones of Heroku or AppHarbor necessarily. 

Vagrant

Now I haven't mentioned much about vagrant but from the reading I've done it's just a no-brainer to have in my toolset for testing configurations and it has plug ins for both chef and puppet. I will blog about this tool when I start using it in anger.

Summary and linkage

Some more reading and playing around needed but I want to get started as soon as possible and be as lean as I can be. Time to decide on a set of features for iteration 1.

Anyway here are some links that started me off and I'll try and update as I move forward.

OpsWorks:
http://www.opscode.com/blog/2013/02/20/aws-opsworks-uses-opscode-chef-as-default-automation-engine/

http://aws.amazon.com/opsworks/

Chef:
http://www.opscode.com/chef/

http://community.opscode.com/cookbooks/aws

CloudFormation:
http://aws.amazon.com/cloudformation/

https://s3.amazonaws.com/cloudformation-examples/IntegratingAWSCloudFormationWithOpscodeChef.pdf

Elastic Beanstalk:
http://aws.amazon.com/elasticbeanstalk/

Vagrant:
http://www.vagrantup.com/

Puppet:
http://docs.puppetlabs.com/