Bare Metal

Удивительно, что, несмотря на то, что вся индустрия нуждается в декларативных идемпотентных методах настройки для Linux-машин, у нас так и не появилось “решения по умолчанию”.

  • есть Ansible, который всё больше становится декларативным, но не является таковым по своей сути
  • есть Puppet и SaltStack с крутой кривой обучения и требованиями по инфраструктуре вокруг
  • есть Talos, который вроде бы всем хорош, но заточен под k8s
  • есть легкий и быстрый CFEngine, но с очень специфичным DSL и крутой кривой обучения

Но нет готовых распространённых решений, которые являются стандартом для индустрии, как это произошло с тем же terraform или k8s.

Хотя казалось бы, всю настройку можно свести к ограниченному количеству примитивов: настройки, пользователи, файлы, пакеты, сервисы и так далее. И, вроде бы, в этом нет ничего невозможного. Или это только мне так кажется?


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 suitable only for k8s. • There’s the lightweight and fast CFEngine, but it uses a very old-school DSL and also 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?