[TriLUG] Curious

Michael Peters michael00peters at gmail.com
Mon Oct 27 09:59:17 EDT 2014


On Sun, Oct 26, 2014 at 11:58 PM, Igor Partola <igor at igorpartola.com> wrote:

> There are some great things about puppet:
>
>  - Has basic built in types that are idempotent. This is huge. I don't want to reinvent this, and here Puppet delivers.
>
>  - It supports the right built-in types: package, file, service, user, crontab.
>
>  - Extensive library of good modules to control things like Postgres, Redis, MySQL, MongoDB, etc.
>
>  - It works when done right.

Ansible has all of these as well.

> The bad:
>
>  - The language is confusing. Includes, imports, etc. suck. Creating dependence is confusing and can be repetitive.

In ansible it's just YAML. Execution of tasks is guaranteed to be
ordered so that takes care of most of your dependencies. When that
doesn't work you have roles and handlers.

>  - It is much too slow for what it does. Basic package installation is done one at a time. Some really simple manifests that would take 5 seconds to run by hand, take minutes.

This is one of my favorite things about Ansible after watching puppet
take forever. It's fast. And because it's agent-less you don't have to
waste resources on running a puppet master and worry about having to
scale out your server management infrastructure.

>  - Too many obscure features. The docs literally have things like "we just released this feature, but don't use it. It's a bad idea."

Ansible takes a lot of flack for saying "No" to people with features
and patches. But it also means things don't get designed haphazardly
or get thrown over the fence and then left to bitrot.

>  - Errors cascade, but there is now way to tell puppet to stop on errors. This way if installing MySQL fails, it will attempt to do other unrelated tasks instead of saying "ok fix the MySQL thing first ".

This is how ansible works. If a machine has an error it stops
execution and the cows get angry until you fix it :)


More information about the TriLUG mailing list