2 ms·
Puppet and Chef fall in different places on imperative/declarative spectrum. From the Chef docs (http://docs.opscode.com/chef_why.html http://docs.opscode.com/c
by SrslyJosh 13y ago
Puppet and Chef fall in different places on imperative/declarative spectrum. From the Chef docs (http://docs.opscode.com/chef_why.html http://docs.opscode.com/chef_why.html):
> For each node a list of recipes is applied. Within a recipe, resources are applied in the order in which they are listed.
So it reads in a declarative fashion, but it doesn't actually build a dependency graph (and a static representation of config) like Puppet does.
Anybody who's done enough systems programming can put together something similar to Chef--it's the same old imperative stuff everybody else has written, except with an idempotent sugar-coating and a client/server model to distribute the script^H^H^H^H^H^Hcookbooks. ;-)
I'm not putting chef down--the fact that it's plain old ruby instead of a slightly-odd DSL is a definite advantage in some cases, but I don't think that anything else out there is really in the same category as Puppet.
Of course, there are things about Puppet that bug me, but I really think that it's the Right Thing at its core. The idea that it's not "good enough" seems like a consequence of incorrectly conflating Puppet with the systems that it manages.