On 06/14/2017 11:32 AM, C. R. Oldham wrote:
> Full disclosure--I do work for SaltStack.
>
> That being said, we have MANY internal anecdotal stories from our sales
> engineers that talk about Puppet installs taking months and months to
> get right. Implementing the same functionality with Salt, however, was
> done in just a few weeks.
>
> (</shamelessplug>)
>
> */--cro/*
> C. R. Oldham
> Senior Platform Engineer, SaltStack
>
c...@saltstack.com <mailto:
c...@saltstack.com> /
801-564-4673
>
TL;DR:
I was sold on using Chef and began learning it so I could demo it. Part
way through, I discovered salt and gave it a quick spin. Salt was so
simple to use that I had it integrated into my production process before
I had even finished learning Chef.
In 2013, the simple bash scripts that I'd been using to configure
servers and appliances for production had become unwieldy. I saw a
mention of "puppet" as a "configuration management" tool so I started
investigating!
After an hour of reading, puppet seemed obtuse and somewhat crufty.
Design issues such as non-deterministic order of operations seemed to
cause trouble. I knew I could work around that particular issue, but I
wanted to explore some alternatives.
The CFEngine website was more concerned with talking about "Promise
Theory" than helping me get a hello world working, so I moved on.
Then I found Chef. Opscode had persuasive marketing -- chef improves
upon some of the design issues with puppet, and after hours of reading
and watching Conference presentations about "Using Chef in Production",
"Chef at Facebook", on youtube etc, I was sold!
I started planning my own Chef deployment. The omnibus installed helped
me get the chef server setup in a VM. I just need to learn resources,
recipes, cookbooks. Simple enough. Conference talks recommended
planning a cookbook versioning scheme, using berkshelf for cookbook
management, perhaps vagrant for testing. Then I needed to run the
omnibus installer on a couple target VMs. Next, I needed to learn some
"knife" commands.
Somehow, in the middle of evaluating Chef, I came across a youtube video
of Thomas Hatch presenting his creation, "salt". As he explained the
problem domain, his initial requirements (speed, security, parallelism)
and the architecture of his solution, I changed my mind about chef.
After two weeks with chef and I had put together a reasonable hello
world. But I'd grown tired of the half-baked (sorry) skeuomorphic
naming convention. I had learned so many primitives and after all that
time, still hadn't quite grokked how to be creative with all of them.
By contrast, the primitives in salt were so simple. Within an hour, I'd
learned how to use modules and states. With a single VM and masterless
mode, file.managed, cmd.run, and pkg.installed, I converted a few bash
scripts into salt states within an afternoon. At first, I didn't even
need grains, pillar -- or a master.
Within another week, I was using salt to configure real deliverables.
It was so much easier to maintain than using bash, and so much easier to
understand than chef had been. Also and is engineered well -- there
have been no "non-deterministic order of operations" flaws like had
plagued puppet historically.
If you want salt to win against chef, I would choose a part of your
infrastructure to tame and compare them with a quick demo. Documenting
the process will provide a lot of information to draw on while making
your case to management.
-Joel