Bare Metal

It’s surprising that, despite the entire industry needing declarative and idempotent configuration methods for Linux machines, we still don’t have a “default go-to solution.”

  • There’s Ansible, which is becoming increasingly declarative, but isn’t truly declarative by nature.
  • There’s Puppet and SaltStack, both of which have steep learning curves and require a fair amount of surrounding infrastructure.
  • There’s Talos, which seems to do everything right, but is specifically tailored for K8s.
  • There’s the lightweight and fast CFEngine, but it uses a very specific DSL and has a steep learning curve.

Yet there’s no widely adopted solution that has become the de-facto industry standard — like Terraform or Kubernetes did in their domains.

And you’d think the entire configuration process could be boiled down to a limited set of primitives: settings, users, files, packages, services, and so on. It doesn’t seem like an impossible task. Or is it just me?