$ cat post/irc-at-midnight-/-old-servers-never-forget-/-i-saved-the-core-dump.md

IRC at midnight / old servers never forget / I saved the core dump


Title: Chef vs. Puppet: A Year Too Late


July 23, 2012. The sun is shining on a warm summer day, and I’m sitting in my cube with the door closed. I’ve been working late into the night, wrestling with configuration management tools for what feels like an eternity. It’s funny how something that seemed so simple—a way to ensure our servers behave consistently—has become such a contentious issue.

The Battle of Configuration Management

A year ago, we started using Chef. At the time, it was a relatively new kid on the block compared to Puppet, but we were drawn to its Ruby roots and the vibrant community around it. We believed that if anyone could make configuration management fun and approachable, it would be Chef.

Fast forward 12 months, and I find myself in the middle of a heated debate with our DevOps team about whether we should stick with Chef or switch over to Puppet. The conversation is lively but tense. People on both sides have strong opinions, and the arguments are starting to feel personal.

Why Stick with Chef?

  • Community: The vibrant community around Chef has been invaluable. There’s a wealth of information, plugins, and third-party tools that make it easier to work with.
  • Syntax: I genuinely enjoy writing recipes in Ruby. It feels like solving puzzles when you can use variables, conditionals, and loops.
  • Flexibility: Being able to run arbitrary scripts during the configuration process gives us more control over complex tasks.

Why Consider Puppet?

  • Stability: Puppet has a longer track record and is known for its stability. There are fewer surprises when it comes to deployments.
  • Performance: The performance of Puppet’s agent can be superior, especially in larger environments with many nodes.
  • Documentation: Puppet’s documentation is thorough and well-organized, which can help new team members get up to speed more quickly.

A Year Later: What Have We Learned?

Looking back, the decision wasn’t just about technology. It was also about our evolving needs as a company. As we scaled up, Chef started showing signs of growing pains—its architecture became less efficient for managing large-scale infrastructure. Meanwhile, Puppet’s strengths were becoming more apparent.

The Decision

After much deliberation and a few late-night conversations, we decided to migrate to Puppet. It was a tough decision, but one that felt necessary given the scale of our operation and the needs of our infrastructure team. We started the migration in earnest, setting up a parallel environment where both tools coexisted for a while.

Lessons Learned

  1. Evaluate your Needs: Don’t just follow the trend. Evaluate what you really need from a configuration management tool.
  2. Transition Smoothly: Plan your transition carefully to minimize disruption. Use the existing infrastructure as long as it serves its purpose well.
  3. Community Matters: While stability and performance are important, the community around a tool can make all the difference when troubleshooting or finding new solutions.

Looking Forward

As we move forward with Puppet, I’m excited about the possibilities it offers. It’s a reminder that sometimes, you have to be willing to reassess your choices, even when they’re deeply ingrained in your workflow.


In the end, it wasn’t just about Chef vs. Puppet; it was about finding the right tool for our needs at this moment. And that’s what DevOps is all about—evolving with technology and making smart decisions along the way.