Review: Puppet Vs. Chef Vs. Ansible Vs. Salt
snydeq writes "InfoWorld's Paul Venezia provides an in-depth review of Puppet, Chef, Ansible, and Salt — four leading configuration management and orchestration tools, each of which takes a different path to server automation. 'Puppet, Chef, Ansible, and Salt were all built with that very goal in mind: to make it much easier to configure and maintain dozens, hundreds, or even thousands of servers. That's not to say that smaller shops won't benefit from these tools, as automation and orchestration generally make life easier in an infrastructure of any size. I looked at each of these four tools in depth, explored their design and function, and determined that, while some scored higher than others, there's a place for each to fit in, depending on the goals of the deployment. Here, I summarize my findings.'"
"That's not to say that smaller shops won't benefit from these tools"
I call BS on that statement, I run puppet at home for my 2.5 servers, it really simplifies my life.
...is still my tool of choice.
Since these are all cookie-cutter solutions for a broad range of necessarily very different scenarios, your choice will depend on how well your scenario fits in with the features provided by each product.
As always, the ideal solution will come from rolling your own, possibly by heavily customising an existing solution - which may include one of these. But you may not have the knowledge or the time to do this, and it might piss off corporate if they would rather something which makes you easily replaceable. The correct solution here is to document, but it's a rare sysadmin who is both a good coder and a good documenter too.
When i evaluated this tools i just did one thing:
Checked job offers that quoted those tools.
Answer:
Go for Chef / Puppet, because you will never find people with the other ones skills.
Between Chef and Puppet, it's pretty much a question of taste / existing skills in your company.
This guy just doesn't have what it takes to provide usefulness or utility in his columns. In fact, he's probably responsible for more than a little corporate stupidity, thanks to CIOs blithely following his "advice".
What about security? Like Salt with its "homemade cryptography" https://github.com/saltstack/salt/commit/5dd304276ba5745ec21fc1e6686a0b28da29e6fc
I've recently been playing around with cdist, which is another configuration management framework.
Configuration is done via shell (sh) scripts instead of XML or some other wacky language. I liked this flexibility. Of course, flexibility comes at the expense of simplicity: the base feature set is small so you end up having to write a lot of code, and the shell scripts you end up writing are really ugly because you have to use their weird constructs. Still, it was pretty easy to learn.
The requirements are really minimal: your "master" machine only needs to have Python 3.2, unix tools like sed, etc. and ssh. The target machine only needs unix tools and ssh. This is also another thing I liked. It means that a bare system can be configured via cdist with minimal fuss.
I kinda liked it, and it worked well when we used it. If you don't mind exchanging easy of use for flexibility, you should try it.
It's a Thai name.
Article did not contain the review I expected. Would not read again. 0 stars.
Science is all about firing a drunk pig out of a cannon just to see what happens.
I prefer Puppet, but I don't think it's perfect. As a result, I've written some complicated hacks do to complicated things that aren't directly possible in core. I still think Puppet is the closest thing to being right.
Feel free to look through my articles and hacks: https://ttboj.wordpress.com/
Most code available at: https://github.com/purpleidea/
WANTED: Programmer with 15 years experience Ruby on Rails and 23 years MongoDB experience, to help write $5 million package. Pay: $11/hour, 30 hours/week part time (although we expect you to camp out as we supply pizza and beer). Supply your own equipment. Job to last three months.
-- That's why I'm running my own shop instead of trying to go thru a recruiter.
unfamiliar with all so i did some quick research. Ansible least transparent Chef not bad, it comes down to Puppet Vs. Salt. Had to search Saltstack for information on google to find a result for Salt. i believe most would go with Salt and that seams to be the case, minimal intelligence required. Puppet is very intriguing simply because it requires a higher level of intelligence. Salt offered a tutorial but Puppet offers a direct line of communication to solve problems. in my 15 min. search i would choose Puppet as best choice for the present. slayerwulfe
Using meaningless words as names of software packages has got to stop. What are Puppet, Chef, Ansible, and Salt? They are "configuration management and orchestration tools" - orchestration? Is this MIDI software? I guess the software world has gotten to the point of being so uber-specialized that if you have to ask, you don't need to know.
Am I the only one who saw Ansible in the article and was expecting a discussion about FTL communications?
imagine a room full of angry hitmen.
Puppet: plans to beat you to death, but when his arm gets tired he cant switch to the other arm. instead he grabs a box of markers and proceeds to write an angry letter on your face.
Chef: is competent enough to kill you in your sleep, knows everything about you and can even draft random passerby for practice. Shes spending the next 2 months assembling a rifle for each possible scenario she may find you in, and redefining some of the most effective murder/homicides in history so they work just for you.
Ansible: A nice killer in a business suit that will probably smother you and dispose of your corpse in an entirely predictable way. The 'Murder She Wrote' of configuration management, she'll win an oscar once you're dead.
Salt:as of this writing, salt last killed 54 days ago and currently stands as the less-than-well-known of your potential murderers. Salt has pretty good ideas on how you should die...its just puppet has been maiming folks for way longer and chef's gotten so popular that people cant walk through the streets without hearing someone gloat about how wonderfully she kills. Salt has a manifesto and a pretty sizeable arsenal...someone just needs to send a contract over, or a phonecall, or whatever it is chef does when she gets to murder folks.
Good people go to bed earlier.
Even as a rube I got what the story was about in the first paragraph.
How does Juju compare? (https://juju.ubuntu.com/)
This stuff is overdue in smaller shops - stay with me on this for a second. The smaller guys need to become more efficient and secure, and automation really helps. Potentially the small end could benefit MORE from automation than the big guys already have - automation is a much more disciplined and useful form of sharing information. Docs are often incorrect or incomplete - automation imposes discipline, and also allows the author to benefit from the end result. Time savings for everyone are often huge.
I'm regularly on #fusiondirectory on FreeNode (IRC) along with a few others who are working towards this kind of thing (using the Munich software as a base). Anyone else wanting to join us is welcome.
Programming is hard -- let's go shopping.
(With a tip o'the hat to Jeff Atwood).
rhel-only shop, I've had good luck just packaging my own stuff and using yum with my own repositories. Then keeping each server up to date is a simple matter of 'yum clean all & yum groupupdate whatevergroups'
and two positives make it a negative :)
Did anyone else think of the Swedish Chef when reading the headline?
Puppet can also run with out a server. You can clone your puppet repo and simply run "puppet apply main manifest.pp" The server gives you more control over what the machine receives, so each machine wouldn't have access to items such as ssh keys or user info that doesn't pertain to the machine.
What, me worry?
Architecturally, Salt is based on a Pub/Sub message queue (they use ZeroMQ to build it) - this allows the master node to send commands to a large number of minion nodes with very little overhead. It is also pretty easy to hook into the message queue on either master or minion nodes, so you can use it to send custom "event" messages along the queue (with authentication and all the fixin's) which can be used to trigger commands or configuration changes, or to hook into external systems.
I am using this to experiment with "event-driven architecture" currently - doing things like automatically updating proxy configurations when a new application server comes online, or removing an A record from DNS when a host is terminated. I don't think it's the end-all, be-all of configuration management, but Salt does provide a lot of flexibility to implement some pretty fancy infrastructure.
Shameless plug: If anyone is coming to SaltConf 2014 in Jan., I'll be giving a talk about the above (I don't work for SaltStack, it's just neat stuff)
Puppet, Chef, yadda yadda - the REAL action is in the META tools for automating all the Puppet and Chef etc. systems worldwide. PuppetMaster (pulls all the Puppet's strings), GordonRamsey (yells at all the Chefs out there). Let's not kid ourselves, THAT'S where Skynet is going to emerge.
"Ahh! I see you're in that indeterminate Schrodinger state where - oh, uh
Haven't evaluated in over a year, but a stark finding from that timeframe was that making Puppet or Chef handle Windows was a force-fit, at the very least, and pretty crude. Have things advanced? How well do any of these solutions manage the byzantine complexity that is Windows CM?
"Ahh! I see you're in that indeterminate Schrodinger state where - oh, uh
"Puppet Vs. Chef Vs. Ansible Vs. Salt" sounds like the worst version of rock paper scissors ever
The only reason to choose Puppet over Chef is if you are a sysadmin who can't program. Choose Salt if you prefer Python over Ruby.
Good people go to bed earlier.
Lately I've started going to bed about 4 in the morning. (Severed.) Assuming you go to bed about 9 or 10 at night, that must means I'm MUCH gooder than you.
Great comparison, BTW.
If the universe is someone's simulation -- does that mean the stars are just stuck pixels?
If anyone is looking for an even simpler solution, I've package up my own project and open-sourced it. It's called pave, and has few dependencies, just PyYaml and fabric:
https://bitbucket.org/mixmastamyk/pave
Would love to get more feedback.
#6495ED - cornflower blue
packaged ;)
#6495ED - cornflower blue
Hum I think there is a confusion here... In French too we use the double negative but the original sentence is perfectly clear and would translate with an identical structure (there is a negation in each proposition)... But may I misunderstodd the "negative concordance" (I only googled a bit on it).
Bork, bork, bork, bork!
Well, I didn't throw Ender's Game out there because Orson Scott Card's use of it was one of the latter references
motorcycle tours in vietnam
Were you aware of Paver? http://paver.github.io/paver/
The names could get a little confusing as pave is also a Python project in nearly the same space.
I have seen it but couldn't figure out what it does after reading the docs. Seems like a make alternative. I can't think of a better name unfortunately.
#6495ED - cornflower blue
I don't know about ansible or salt however chef and puppet just seem like the absolute wrong way to do deployment to me. My needs are very basic, install some packages, edit some configs and deploy the latest code in git on multiple linux boxes. Most of my experience is with Chef which basically rewrites the linux package manager in ruby.
I really don't understand why someone doesn't just make a good deployment frontend over the debian packaging framework. Smart guys already figured out all the awesome deployment stuff such as rollbacks, etc. Why people feel the need to rewrite all that into a poorer implementation of a package manager I'll never understand.