As others have said, in the end, it's a matter of personal preference
(e.g. vim or emacs). You could spend a week reading articles and
forum discussions comparing all the different tools; but until you've
really used them, it will mostly be an academic exercise. Of course,
the particulars of your environment might naturally lend itself to one
tool or the other, so it's certainly worth spending some time getting
an overview of the "idiom" of each tool.
That said, we are working on moving away from dozens of little
homegrown management scripts to Ansible. It just feels "right" to me,
like how I would have designed such a system. I like that it's built
on top of ssh. Any sysadmin should be fairly intimate with ssh, so
why not build your CMS on top of a familiar tool? (But, of course,
Ansible is flexible enough that you don't have to use ssh.) I might
even go so far as to call it a "platform" rather than a tool. Out of
the box, you can quickly get going having it do useful work by reading
the docs/tutorials on the website. And just going through those
exercises, you'll start to see that there's a ton of flexibility
available, which is your option to exercise or not.
And that perhaps is one of the drawbacks. We're actually somewhat in
"analysis paralysis" mode with Ansible right now. Because there is so
much flexibility, we are constantly second-guessing ourselves the best
way to implement our fairly complex and diverse environments. In
particular, how to group configuration "profiles". E.g., this server
needs to be a DNS master, this server needs to be a DNS slave, this
server needs MySQL + DNS slave, this server needs these packages
installed, this server needs those packages but not these, etc etc.
But I always prefer a tool with too much flexibility over something
that forces you in to a specific way of doing things: that makes it
our problem, not the tool's.
The only other one I have any experience with is CFEngine. I
tried---and I mean really tried---to get something going with
CFEngine3. I just couldn't get my head around it. The wacky DSL it
uses for expressing configs just wasn't intuitive to me; the whole
bootstrapping processes seemed to be overly-complex; I found the
documentation managed to be lengthy yet still lack real substance. By
contrast: everything I've wanted to do in Ansible I was able to do
quickly (and usually in several ways); on the client side, the only
thing needed for an Ansible bootstrap is ssh; and the docs for Ansible
have met or exceeded all expectations.
My colleague and I were even able to quickly hack on some of the
Ansible Python code to add some functionality we wanted. At least the
pieces we looked at appeared to be quite straightforward. I have 15
years of C/C++ programming experience and wouldn't even consider
messing with the CFEngine code. Maybe it's fine, but the complexity
of the rest of the system is enough to scare me away from looking at
the source.
To be fair, it was *many* years ago that I looked at CFE3; maybe many
of my issues have since been addressed. But, at this point, Ansible
checks all my boxes, so that's where we're staying.
Again, that's just my taste/experience. If you have the time, I'd
spin up some VMs and play with the different tools. Try to implement
some of your key items, see how hard/easy they are.
On Thu, May 12, 2016 at 8:27 AM, Fabian Arrotin <arrfab at centos.org>
wrote:> On 12/05/16 10:21, James Hogarth wrote:
>> On 12 May 2016 at 08:22, G?tz Reinicke - IT Koordinator <
>> goetz.reinicke at filmakademie.de> wrote:
>>
>>> Hi,
>>>
>>> we see a growing need for a better Configuration management for our
>>> servers.
>>>
>>> Are there any known good resources for a comparison of e.g. Puppet,
>>> Chef, Ansible etc?
>>>
>>> What would you suggest and why? :)
>>>
>>>
>>>
>>
>> Puppet is great for central control with automatic runs making systems
>> right and keeping them in line, it's not an orchestration tool
though -
>> however it's commonly supplemented with something like rundeck
and/or
>> mcollective to assist here.
>>
>> Chef is great for a ruby house - you'll need to brush up on your
ruby as
>> writing cookbooks is heavily tied to the language. Historically it was
very
>> debian focused with issues like selinux problems. I believe these have
been
>> generally resolved though.
>>
>> Ansible is a great orchestration tool and excellent for going from base
to
>> a configured system. It is less of a tool to keep things inline with a
base
>> however with no central automated runs (ignoring Tower which is not
FOSS
>> yet).
>>
>> Ansible is also much simpler to get into given the tasks are just like
>> following through a script for defining how to make a system, as
opposed to
>> learning an actual DSL like required for understanding puppet modules.
>>
>> There's a growing pattern of using ansible for orchestration
alongside
>> puppet for definitions as well (there's a specific ansible module
to carry
>> out a puppet run).
>>
>> I've not looked at salt at all personally.
>>
>> Came across this article a while back:
>>
http://www.infoworld.com/article/2609482/data-center/data-center-review-puppet-vs-chef-vs-ansible-vs-salt.html
>
> +1 on your comments around those ones.
> After that, it's up to the sysadmin (and also sharing with the group of
> colleagues working in the infra team) to test and see which one fits the
> bill.
> Some people really dislike ansible, while personally I like it more than
> puppet, but it's also a personal feeling with the tool : do you prefer
> green or red (and then someone will answer "blue" !) ? both are
colors,
> but we have a preference.
> Same for cfgmgmt tools, assuming that they do what you want them to do too.
>
> --
> Fabian Arrotin
> The CentOS Project | http://www.centos.org
> gpg key: 56BEC54E | twitter: @arrfab
>
>
> _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> https://lists.centos.org/mailman/listinfo/centos
>