Failure happens. Its a part of working in technology, and as a techno worker bee, my job is to ensure that those failures have as little impact on my team and my company as can be summoned. Part of this (as the business peeps say) “risk mitigation strategy”, is backups. Its a part of working in technology that I want to give as little attention as possible, so its important its low touch and that its done correctly and is available when I need it.

For me, backups are that thing I just expect to work, and require very little of my attention. The last thing I want in a crisis, is to find out that my backups are not solid and loose data.

I once nuked a large (at the time) multi disk array, and had I not had solid backups to recover from, I’d probably be counting trees for the forest service instead of talking about fucking backups.

For the past several years, the environment that I’ve been working in has been using Bacula for the task. At first I had my doubts about weather or not it was going to be up to the task, but over time I began to trust it more and more until now, telling others of what I’m calling a success.

Bacula seemed to have more moving pieces that was necessary, and now listening to the un-indoctrinated, its clear that this drives people to look at other methods to accomplish backups. Bacula requires some amount of infrastructure for a successful deployment, which I personally found to be a perfect fit for using config management. There are several moving pieces, and they have some amount of flat file configuration, there is a database, and these components must be configured to trust one another. These simple factors led me to have a hard think about how to marry the two, backups and config management.

Others may say there are too many moving parts, and that backups should be simpler, but in my experience, if you start building a homegrown solution to solve your specific use case, you will end up with something that looks very much like other backup systems that solve most of the same problems that your solution does, and perhaps with more grace. If hacking on tooling for backups is something you have the time for, great, hack away, but for me I just need it to work.

I’ve used several backups systems before this, and I continue to use others as well, what follows is only really about Bacula in combination with Puppet.

This week I’ve been working to get our internal Bacula Puppet module out in the open. I no longer have any ownership of our backup infrastructure, and we may very well switch technologies. As such, I wanted to put our work in the open for public consumption in case its useful for anyone else.