Is there a configuration management tool which:
- is idempotent
- is agentless
- has a sane configuration language which lets you easily build abstractions, as opposed to the jinja2-augmented yaml abomination which Ansible uses?

I mean, I have nothing against jinja2, and nothing against yaml, but trying to build a programming language by combining the two the way Ansible does is just evil...
It tricks you into using it like a programming language, and then you suffer because it's not a real programming language.

@cadey I mean, it's not good at being a programming language. It's not expressive enough. It makes it hard to do anything slightly more complex than simple ifs and loops over statically configured lists.

@cadey if less is more, then Ansible is, at the same time, too expressive, and not expressive enough.

@Wolf480pl do not think of ansible's yaml as a programming language. It is there to describe configuration, but it's not imperative and it's not a "real programming" language (at least, no more than css)

@hiciu But it pretends to be one.

It has loops, ifs, and variables, and you can do all kinds of crazy stuff with those variables.
If set_fact didn't exist, then maybe I wouldn't try to use it as a programming language...

Also, whenever I try to use it as not-a-programming-language, I end up repeating myself a lot.
It's not a good declarative description of a machine's state either.
So my natural reflex is to build an abstraction on top, to avoid repeating myself.

@Wolf480pl I totally understand you. Ansible requires a different mindset. I kind of learned to enjoy it, but maybe that's just a stockholm syndrome.

@hiciu tbh, I believe I could come up with a better declarative language on top of Ansible. At least better for my usecase. Guess I should try the API sometime.

@Wolf480pl you can always use ansible's api or generate json, from real programming language, and feed that json to ansible as a playbook :)

@Wolf480pl nix package manager and its associated language probably? Failing that terraform allows for abstraction through the use of its module system. I find terraform to be fairly sane as well.

Sign in to participate in the conversation

We are a cute and loving international community O(≧▽≦)O !