Live data from Hacker News

Puppet vs Chef, Fight

devopsanywhere.blogspot.com

51–60 of 109 posts

Re: Puppet vs Chef, Fight

#51
post #35

The correct answer to this entire question is "yes". Use whichever tool encourages you to adopt proper configuration management. Yes, there's a gap that the current crop of CM tools don't address (and why we see new versions of capistrano clones with a bit of system management sprinkled in) but the three major tools right now - Puppet, Chef and CFengine are all at a state where they address 95% of the use cases for s…

What do you consider to be missing in the current configuration management tools?

Re: Puppet vs Chef, Fight

#52
post #30

Earlier quoted context omitted.

"The business model of the companies promoting Puppet and Chef seems to be to charge for support and/or hosted services. Which is fine. But is it leading to abysmal documentation?" This is one of the reasons we're moving Puppet Labs from being a support company to a product company, and not for hosted services. If your bread and butter comes in from support, you have no incentive to actually make your product easier…

It's gotten better, but it still is very messy. What it needs above everything else is a table contents that stays with you as you read. The documentation you have now only lists a TOC for the section you're in. And the TOC is tucked away in the right-hand corner and stays there when you scroll. So whenever I dive into your docs, I never get a sense of "where" I am in the whole big ball of string, and I get frustrate…

Those are all good points, and we know the layout needs to improve.

I would add though that once you've gone through the basics, you find yourself primarily living in the Type Reference, which is arranged alphabetically.

http://docs.puppetlabs.com/references/stable/type.html

Always happy to get bug reports, feature requests and feedback on the docs...

http://projects.puppetlabs.com/projects/puppet-docs

Re: Puppet vs Chef, Fight

#53

A little while ago I wrote a piece comparing Puppet vs Chef on 10 different criteria and concluded that Puppet wins on all of them: http://bitfieldconsulting.com/puppet-vs-chef It stimulated a very interesting discussion in comments in which some of the leading lights from both communities (and there is some overlap) took part.

A little while ago is a bit of a stretch. BOTH communities have moved far and beyond the state of things in that article.

The fact of the matter is that X vs. Y is ENTIRELY subjective. It isn't a sporting event where there's a clear cut way to call a winner.

Some people like Puppet. Some people like Chef. Anyone trying to decide between ANY software - whether two competing client libraries or something as critical as configuration management owes it to themselves and the company to try all the options. The one that's best is the one that encourages you to adopt configuration management.

Re: Puppet vs Chef, Fight

#54
Something that wasn't visible in the article: Not that Puppet is extremely better here, but I really hate how much manual tweaking Chef requires after installing from a package and the experience in running it needed. You cannot easily scale it (indexed database pretty much needs to stay in one place), couchdb stops replication at random and it seems that chef doesn't deal well with document versioning in general since I keep running into a situation where the cookbook is not on the list after uploading, or a visible cookbook cannot be deleted. It also sometimes requires reindexing for some unknown reason, or the attributes don't work properly in search.

I prefer to work with Chef much more than Puppet (as a user/developer), but I wouldn't want to be responsible for running Chef cluster itself. There are too many different elements to learn and take care of. Unfortunately official hosted service is very expensive, so there's no good alternative once you need many nodes.

Re: Puppet vs Chef, Fight

#55
post #52

Earlier quoted context omitted.

It's gotten better, but it still is very messy. What it needs above everything else is a table contents that stays with you as you read. The documentation you have now only lists a TOC for the section you're in. And the TOC is tucked away in the right-hand corner and stays there when you scroll. So whenever I dive into your docs, I never get a sense of "where" I am in the whole big ball of string, and I get frustrate…

Those are all good points, and we know the layout needs to improve. I would add though that once you've gone through the basics, you find yourself primarily living in the Type Reference, which is arranged alphabetically. http://docs.puppetlabs.com/references/stable/type.html Always happy to get bug reports, feature requests and feedback on the docs... http://projects.puppetlabs.com/projects/puppet-docs

> I would add though that once you've gone through the basics, you find yourself primarily living in the Type Reference

Yes, that's were I ended up. I'm way beyond that level now, but I sometimes have to look something up in the docs, and always have to hunt down the URL to that particularly page.

Re: Puppet vs Chef, Fight

#56
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?

bcfg2 works well. It aims toward 100% fully managed servers (i.e. package dependency management, full /etc management) more than Chef/Puppet (but other than DoD/banking, 100% management isn't worth it). Other reasons I prefer Chef are 1) solo mode, 2) more dynamic recipes with ruby 3) more out-of-the-box resources (dirs, files, templates, users, etc)

Re: Puppet vs Chef, Fight

#57
post #30
post #5

Am I totally missing some obvious Chef documentation? The entirety of the documentation when I last looked seemed to be the wiki + the one 50-page O'Reilly book. I ended up literally printing out the wiki. (And the wiki seemed to be in a state of pretty extreme flux and/or disagreement with what blog posts suggested was best practice.) The business model of the companies promoting Puppet and Chef seems to be to charg…

"The business model of the companies promoting Puppet and Chef seems to be to charge for support and/or hosted services. Which is fine. But is it leading to abysmal documentation?" This is one of the reasons we're moving Puppet Labs from being a support company to a product company, and not for hosted services. If your bread and butter comes in from support, you have no incentive to actually make your product easier…

Nigel, that's an excellent move.

The one persistent thread I've seen with "support-based models", notably Red Hat, is that ... the tools leave you requiring support, and yet the support still sucks (in large part because the support engineers have to use the same crappy tools you do).

I'm not going to pretend I've got the Free Software business model sorted out. But I have noticed that project goals and incentives do line up with results. Debian has a social contract, a constitution, and policy, and the tools to support these. From an ease-of-use / ease-of-maintenance perspective, Debian (and its derivatives) blow RPM-based systems out of the water. And to be clear: the distinction is much less the packaging formats (though that's part of it) and far more the use and management of these tools.

I think there's someone who died recently who made the end-user experience key. While his organization struggled at times, it's emerged in recent years as an absolute behemoth which suggests ultimately that the alignment he chose is better than that of a principle rival.

Re: Puppet vs Chef, Fight

#58
post #35

The correct answer to this entire question is "yes". Use whichever tool encourages you to adopt proper configuration management. Yes, there's a gap that the current crop of CM tools don't address (and why we see new versions of capistrano clones with a bit of system management sprinkled in) but the three major tools right now - Puppet, Chef and CFengine are all at a state where they address 95% of the use cases for s…

What do you consider to be missing in the current configuration management tools?

It's not so much what I consider to be missing as what others don't seem to be finding in them that encourages them to bolt on functionality into "incompatible" tools:

http://blog.lusis.org/blog/2011/08/22/the-configuration-mana...

Re: Puppet vs Chef, Fight

#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 that in theory, in practice you'd rather want to fork your eyes out with a spoon.

However, the pragmatism comes at a price: The chef-implementation is an absolute and unmitigated disaster.

You'll spend quite a bit of quality time initially to get the six dozen components to play ball and to fix up basics that shouldn't need fixing (i.e. you'll want to ensure that everything is under version control and not just the parts that chef deems worth versioning).

Over the first couple months you'll also see the odd server-crash while you figure out the peculiarities of your particular installation. Chef is very heavy on dependencies and the exact software-versions depend on when and how you install (pkgs vs source-code).

However, once you're over that hump and if you're not too worried about standing on the shoulders of 'a one-eyed amongst the blind' then the whole cookbooks/roles/runlists arrangement is quite comfortable to work with.

Just don't expect features like dry-run, real idempotency or clean dependency tracking that some would consider "basic" for such a tool. Also don't expect a security-model at all; to my knowledge all hosts that are authorized to talk to a chef-server can see all cookbooks and databags on that server.

If you care a lot about those latter minor quibbles then perhaps Puppet might be more your thing.

Puppet is conceptually much cleaner (night/day difference), which sadly and ironically is also its biggest drawback; they took it too far. Puppet made a bad decision early on by inventing their own language. This decision will be your personal ball on a chain for the lifetime of your puppet deployment.

But, is it really that bad? Well. Yes.

After the initial (steep) learning curve there's only a small plateau of reward before you begin to run into the more subtle issues. The most commonly heard complaints about the language are the ass-backwards class/variable-inheritance and the blurry (and effectively undocumented) divide between what should go into the manifests (sorta like chefs "cookbooks") and what into a storage layer called "extdata" (sorta somewhat like chefs "databags"). But rest assured, there's plenty more, I don't want to spoil it all at once here.

So, yes, you will hate puppet every time you have to make a complex change.

Yet for some it might still be worth it, here's some of my reasons: Once you finally have something up and running puppet feels much more predictable and "solid" than chef. You can actually dry-run and test (most) changes before rolling them out. Puppet will provide meaningful error messages in most situations (unlike the esoteric chef stack-traces). The puppet daemon is just that; one daemon (unlike the conglomerate of moving parts that comprises a chef deployment). Generally speaking there is much less "magic" in puppet than in chef. You will almost always know precisely what went wrong - a pretty important attribute that chef unfortunately doesn't share.

Oh, and no least: the puppet documentation is heads and shoulders above chef (although the latter has improved recently).

So, if you're in the market, good luck making your choice. I'm not making a recommendation here because, quite frankly, I wouldn't recommend either to anyone other than my worst enemy. ;-)

Re: Puppet vs Chef, Fight

#60
post #30

Earlier quoted context omitted.

"The business model of the companies promoting Puppet and Chef seems to be to charge for support and/or hosted services. Which is fine. But is it leading to abysmal documentation?" This is one of the reasons we're moving Puppet Labs from being a support company to a product company, and not for hosted services. If your bread and butter comes in from support, you have no incentive to actually make your product easier…

Nigel, that's an excellent move. The one persistent thread I've seen with "support-based models", notably Red Hat, is that ... the tools leave you requiring support, and yet the support still sucks (in large part because the support engineers have to use the same crappy tools you do). I'm not going to pretend I've got the Free Software business model sorted out. But I have noticed that project goals and incentives do…

Thanks for the positive words.

I'm not going to pretend we've got the Free Software business model perfectly sorted either.

We're producing proprietary software as well as developing/curating open source software projects, and there is a balancing act involved there.

Not to sound too bandwagon-jumpy (I've found the recent hyperbolic public outpouring of grief somewhat distasteful) but I care about user experience and documentation, and I've always believed that focusing on the end user will lead you in the right direction.

http://puppetlabs.com/blog/what-is-user-experience-in-puppet...

We're looking for more UX staff, and have an open UX Designer role right now actually...

http://puppetlabs.jobscore.com/jobs/puppetlabs/ux-designer/b...

Post reply on HN