Live data from Hacker News

Puppet vs Chef, Fight

devopsanywhere.blogspot.com

71–80 of 109 posts

Re: Puppet vs Chef, Fight

#71
post #59

I'm running both chef and puppet in production, so I will add my (slightly cynic) comparison here: When comparing Chef to puppet then Chef comes out as the pragmatist. Once up and running most common every-day tasks are less painful in chef. Apart from that its main advantage over puppet (to me) is that it allows to semi-sanely manage transient hosts (cloud/EC2) that enter/exit a cluster ad hoc. Puppet can also do th…

I'm interested to know why someone would not recommend CM (or atleast not recommend puppet/chef). I think despite its faults, I've seen that many problems become non-issues when you are using puppet. OTOH, I've seen organizations struggle for months(or for ever) with what could have been a simple solution with puppet.

Could it be you made the wrong design decisions both times? Sometimes, people try to do complex things in puppet, when they should using puppet just to push out that cronjob or init script, or rpm/apt package to handle the complexity.

Can you give more details like how many serves you have? Do you have a complex combination of hardware(physical + virtual) and operating system platforms?

Do you have a complex combination of apps on these platforms? Did you use the "environments" feature of puppet/chef? (Environments are totally broken in puppet) Did you use Dashboard/Foreman or Grill(chef only) and did that make things easier?

Did you migrate from the "hairball nest of Bash and Perl that holds your data center together" or did you build your infra from scratch with puppet/chef?

Re: Puppet vs Chef, Fight

#72
post #59

I'm running both chef and puppet in production, so I will add my (slightly cynic) comparison here: When comparing Chef to puppet then Chef comes out as the pragmatist. Once up and running most common every-day tasks are less painful in chef. Apart from that its main advantage over puppet (to me) is that it allows to semi-sanely manage transient hosts (cloud/EC2) that enter/exit a cluster ad hoc. Puppet can also do th…

From a complete outsider's point of view, it sounds as if the state of the art SCM tools are at the pre-2005 level of VCS tools. Chef and Puppet are the SCM equivalents of CVS or Subversion. The Git/Mercurial equivalents (in terms of power) have yet to appear. Does this analogy make sense?

Re: Puppet vs Chef, Fight

#73
post #65

Earlier quoted context omitted.

I have no real experience with configuration management, but I'm confused why the programming language matters? It seems to me like people complaining about Make being a poor programming language.... IT'S NOT FOR PROGRAMMING! It's for build sequencing. Every single program on your computer is a command-line-invocation away. Let Make handle incrementally executing external scripts based on timestamps, and let real pro…

Isn't the point of Puppet to have an idempotent declarative language. And can't it execute arbitrary programs? Yes and no. The main argument against puppet's dedicated DSL is that it's dedicated. I.e. you'll spend a lot of time learning a complex language for the sole purpose of running puppet. You cannot transfer that knowledge to anything else and unless managing puppet is your only job you'll frequently have to re…

Curiosity, not to be argumentative:

What are some examples of things are really elegant to express in Puppet? What are some examples of things that you had to resort to terrible hacks for?

Please use personal, concrete examples, if you don't mind.

I've only got a couple of boxes to manage, but reading through the docs for the big three configuration management systems, I really was confused about the need for most of the stuff in the tutorials. I'd also be interested in concrete examples of where shell-scripts fail so badly.

Re: Puppet vs Chef, Fight

#74
post #39
post #8

How does the free version of CFEngine http://cfengine.com/ compare to these two?

I'm curious about this as well. Does anyone have any experience with this? It would be interesting to hear someone's opinion since CFEngine seems to have been around for awhile.

I have used cfengine2 extensively, but not cfengine3. I've only read about cfengine3.

cfengine2 is a simple and effective mechanism for managing systems. However, cfengine2 has some issues. It has limited facilities for abstraction, resulting in a lot of code duplication. It has no built-in template engine, meaning that if you need to assemble a file based on various conditions you have to cobble it together with pattern matching and line-insertion. It's pretty easy to screw this up and lose idempotency. There's a 30-package-install limit per cfagent run, which fails silently. This is very annoying and requires some hacks to circumvent.

Also, in cfengine2 you have a configuration file that's basically : . If you approach more in terms of : , it's a minor inconvenience.

Cfengine3 addresses some of these issues, but I haven't used it much so can't really give it a fair review.

Re: Puppet vs Chef, Fight

#75
post #39
post #8

How does the free version of CFEngine http://cfengine.com/ compare to these two?

I'm curious about this as well. Does anyone have any experience with this? It would be interesting to hear someone's opinion since CFEngine seems to have been around for awhile.

[deleted]

Re: Puppet vs Chef, Fight

#76
post #39
post #8

How does the free version of CFEngine http://cfengine.com/ compare to these two?

I'm curious about this as well. Does anyone have any experience with this? It would be interesting to hear someone's opinion since CFEngine seems to have been around for awhile.

CFEngine's current promise-theory-based http://en.wikipedia.org/wiki/Promise_theory architecture is much more recent, though.

Re: Puppet vs Chef, Fight

#77
post #71
post #59

I'm running both chef and puppet in production, so I will add my (slightly cynic) comparison here: When comparing Chef to puppet then Chef comes out as the pragmatist. Once up and running most common every-day tasks are less painful in chef. Apart from that its main advantage over puppet (to me) is that it allows to semi-sanely manage transient hosts (cloud/EC2) that enter/exit a cluster ad hoc. Puppet can also do th…

I'm interested to know why someone would not recommend CM (or atleast not recommend puppet/chef). I think despite its faults, I've seen that many problems become non-issues when you are using puppet. OTOH, I've seen organizations struggle for months(or for ever) with what could have been a simple solution with puppet. Could it be you made the wrong design decisions both times? Sometimes, people try to do complex thin…

not recommend CM

Sorry, that part was irony. I would of course recommend CM. I was just trying to express that the current crop of tools is nowhere near a level of maturity where you could recommend one or the other as a no-brainer.

Could it be you made the wrong design decisions both times?

Surely. More so with puppet than with chef as the puppet language offers slightly more rope to hang yourself on the foot. However, I'm quite confident we have maxed out both tools to about the best of their abilities now (short of the more esoteric extensions such as mcollective). There is of course always a next step, but I can't think of something that could potentially change my perception of their respective problem areas (which, as I outlined in my parent post, are pretty fundamental for each tool).

Can you give more details like how many serves you have?

Largest puppet deployment is ~70 hosts, largest chef is ~40 hosts.

Yes, we've had to migrate the puppetmaster to a pretty beefy host. Yes, chef's claim to scalability is a joke. We experimented with couch replication but quickly went back to running separate (beefy) chef-servers and sync'ing them via git.

A tangential reason for running separate puppetmaster/chef instances is the lack of a trustworthy security model in both. Extdata/databags do occasionally contain sensitive information, neither puppet nor chef accounts for that (don't get me started on "encrypted databags").

Do you have a complex combination of hardware(physical + virtual) and operating system platforms?

We run (only) debian on physical and cloud servers. For cloud deployments chef works better for us. For physical servers we're rooted in puppet but slowly leaning towards chef for uniformity. I wouldn't say our deployments are especially complex. And even if they were then that'd be no excuse for the tools that were created to manage precisely that kind of complexity.

Did you migrate from the "hairball nest of Bash and Perl that holds your data center together" or did you build your infra from scratch with puppet/chef?

The bigger clusters were built from scratch but we have chef/puppet clusters in various states of finesse.

Oh, this reminds me of one of the less obvious issues that I forgot in my initial rant: Updates.

You absolutely, positively want to either update your entire cluster (all puppet/chef clients) in lockstep with the server or not at all. The "backwards compatibility"-claims didn't work out for us when we tried.

Re: Puppet vs Chef, Fight

#78
post #16

While I often see "Puppet vs Chef", I never see Bcfg2 mentioned. Is its low mindshare related to its quality, it's exclusion from the set of Ruby-based config management tools, its origin in the government space, or its terrible name?

Main reasons for me:

Client-server model

Insufficient online documentation for what seems to be a verbose and somewhat limited configuration language.

The XML is a minor turnoff but for me it's more a question of what the language is doing. Eg:

        
        
        
        
        
In puppet, you define a list of packages and then install them with one declaration or do any number of other things with that same list.

Re: Puppet vs Chef, Fight

#79
post #65

Earlier quoted context omitted.

Isn't the point of Puppet to have an idempotent declarative language. And can't it execute arbitrary programs? Yes and no. The main argument against puppet's dedicated DSL is that it's dedicated. I.e. you'll spend a lot of time learning a complex language for the sole purpose of running puppet. You cannot transfer that knowledge to anything else and unless managing puppet is your only job you'll frequently have to re…

Curiosity, not to be argumentative: What are some examples of things are really elegant to express in Puppet? What are some examples of things that you had to resort to terrible hacks for? Please use personal, concrete examples, if you don't mind. I've only got a couple of boxes to manage, but reading through the docs for the big three configuration management systems, I really was confused about the need for most of…

Well, it's of course all subjective, but I can present my perception of both (elegance vs hack) in a single pastie: http://pastie.org/2668110

This will assemble a hosts-file that contains all hosts from $group, on the hosts that include the class.

It's awesome and terrible at the same time because it demonstrates an Exported Resource (@@host, Host >, awesome) and at the same time it shows how we had to resort to extdata for grouping (extlookup = terrible) and how opaque the puppet DSL is to the uninitiated.

Re: Puppet vs Chef, Fight

#80
post #59

I'm running both chef and puppet in production, so I will add my (slightly cynic) comparison here: When comparing Chef to puppet then Chef comes out as the pragmatist. Once up and running most common every-day tasks are less painful in chef. Apart from that its main advantage over puppet (to me) is that it allows to semi-sanely manage transient hosts (cloud/EC2) that enter/exit a cluster ad hoc. Puppet can also do th…

From a complete outsider's point of view, it sounds as if the state of the art SCM tools are at the pre-2005 level of VCS tools. Chef and Puppet are the SCM equivalents of CVS or Subversion. The Git/Mercurial equivalents (in terms of power) have yet to appear. Does this analogy make sense?

It makes sense to me. I thought "we're waiting for the git(hub) of SCM" before I saw your post.
Post reply on HN