Monthly Archives: January 2013

Work with me at our funded Silicon Valley startup

We’re looking for someone to help extend and run our Cloud platform.

This is a role in a small team with lots of autonomy: we want to build an awesome cloud service to match our awesome product.  We’re funded, we’re selling our product like hotcakes and  we want you.  Link below.

Cloud DevOps Engineer



Writing a Neo4j Puppet module for fun and profit

I haven’t had a chance to do any code in public recently.  Skewer and XFD have had to take a back seat to the day job, where I’ve been working on our Heroku Add-on.  We recognised that a PaaS won’t work for everyone, so I was asked to take a look at deploying Neo4j on EC2.

The original plan was to make an AMI that people evaluating Neo4j could instantiate on EC2.  I didn’t want to create a machine by hand and then build an image from that machine: it seems more repeatable to have a process where you bootstrap the OS using VeeWee and then use Puppet or Chef to finish the job.  In the end I decided to start with Puppet and Ubuntu and see how far I got.

I started by fixing our Neo Technology Debian repository so we could get signed packages.  That had benefits on its own – our release process is simpler now.  Then I wrote a Puppet module to install the packages on Ubuntu and apply some configuration changes on top to make it usable (for example, Neo4j doesn’t listen on all interfaces by default).  The README suggests that you download and run a wrapper script that will fetch the module, the dependencies, and then run them.  It’s looking decent.

We strongly suggest that people use the Oracle JDK, so I had to come up with a way to get that installed, without distributing the JDK myself.  Also, I felt it was important that the user signal their acceptance of the terms and conditions of the Java end user license, so I found a way to do that.  Also, doing anything on the cloud without authentication is foolish, so made it possible for the user to pass a username and password to use at runtime.  It’s looking useful.

Then I put myself in the position of someone who wants to install Neo4j, but isn’t familiar with the territory of EC2 and Ubuntu servers.  It wasn’t enough.  So I wrapped the entire thing in CloudFormation to create the AWS resources that the user needs, bootstrap the Puppet module, and pass down the parameters.  Now we’re getting somewhere.

The finished product is at  Feedback welcome.  I’m not sure I need to bother with an AMI.

I’m thinking about:

  • Making it compliant with Puppet Forge
  • Supporting other Linux distributions
  • Making it easier to get SSL going (though there’s no getting around the fact that the end user will need a cert, I guess)
  • Supporting multiple regions on AWS


News, January 14

  • Ancient Configuration Management community, cmcrossroads has relaunched, by it’s new owners TechWell.  It’ll be interesting to see how this works out.  Configuration Management is one of the disciplines that’s been folded into DevOps – but will we lose something in the cooking? [link]
  • Rubymine Enoki will be officially released soon, with some very basic Puppet support – syntax highlighting, and a basic first pass at validation.  Keep those bug reports coming!
  • Go is affected by the Ruby security bug.  Go install the patch, right now. [link]
  • There are Puppet Camps in SF, Sydney and Ghent this January.    Sydney’s a mere 1337 miles away (auspicious number) from Build Doctor HQ, but I’m unlikely to make that one. [link]
  • UrbanCode (who sponsor this blog) just releases uRelease 4.0, giving more orchestration goodness. [link]

News, January 2

  • Tonight, we did some tree maintenance at the New Zealand Build Doctor HQ: some of them haven’t been trimmed in 15 years.  I was reminded of an old PragDave post. [link]
  • Malte Ressin (nice guy who I met at XP Day in 2011) is doing a survey on software development and localisation.  Want to do him a  good turn while you’re still full of Christmas Cheer? [link]
  • Urbancode (Sponsor Danger) are doing a webinar on managing dependencies at build time. [link]
  • SauceLabs have an OSX client so you can sport a ponytail (OK, I did Mac support in the 90’s) and do browser testing on real operating systems.  They’re also giving away free service to OSS projects.  [link]
  • Splunk are courting developers with a REST API on Splunk Storm (I always misread that), and Java/Python SDK’s for the enterprise product [link]
  • Update: I forgot to mention that Heroku now support Jruby. Huge. [link]
Happy 2013, everyone.