in Jekyll was looking pretty stale, so obviously it was time for a redesign. I wanted to take advantage of some of the new tools in my toolbox, so this project was going to use:

  • an environment described by ansible and running in vagrant
  • flat files generated by jekyll
  • deployed to amazon S3 and served off of cloudfront

What's the point in starting a new personal project if not overarchitecting 5 pages of HTML?

Ansible + Vagrant

This combination is what I've been looking for my entire life. I can define my environment in playbook.yml and then check it into git. I'm used to spending hours adding packages to a server to get it working the way I want, and then not remembering what I've added or knowing what's safe to remove. Now it's all in git, and I can just spin up a new instance if I want to test a different set of installed software.

This is my Vagrantfile. It's basically unchanged except that I've told it to use ansible.

My Ansible playbook is a bit more custom. I had some trouble with s3cmd, but other than that it's pretty straightforward.


I'd used jekyll back when it was in 0.12. It's matured a bit since then, but everything still works more or less the same way. I'm not a Ruby developer by nature, so I had a hard time making sense of rvm and gems and the like, but in the end I think I ended up with something functional.

Since I was using Ruby anyways, I figured it made sense to give rake a try. I've been working Ant and Grunt lately, so it took some getting used to. I'm not sure if I was just looking in the wrong places, but Rake definitely doesn't seem to have the same vibrant community that other build tools do. My Rakefile is just a wrapper for some shell commands, which doesn't seem right, but rake deploy is still a lot easier to remember than s3cmd's syntax.

Amazon AWS

I've been using ec2 for a while now, but since this is just a collection of dumb HTML files, I get to use some of Amazon's more targeted offerings. Enter S3 and cloudfront. I basically followed this tutorial word for word to get that set up. It was a lot less confusing than I remember it being, the last time I looked into it. I don't know if Amazon's admin panel has gotten better, or I just had better help this time.

In conclusion

I'm going to try and keep this site updated with what I'm working on, but I hate writing, so we'll see how it goes. This is a very engineered setup, but the end result is something that I can update pretty easily (I'm even writing this in markdown!) and something I'm proud enough of to want to keep up to date.