Hacker News new | ask | show | jobs
by throwamon 1331 days ago
I might just be biased by selective attention, but it seems like more and more of these are popping up lately.

I feel like we will eventually recognize a variant of Greenspun's Tenth Rule as common wisdom:

> Any sufficiently complicated build system or configuration management system contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Nix.

(Although to be honest it might make more sense to replace "Nix" with "Guix"...)

4 comments

I think it’s a cyclic pendulum sort of thing. We crave the networking/herding effect. So we promote a bandwagon, and try to get everyone on the same. We get there and realize we’ve turned a trip to Starbucks into an Artemis launch. Frustrated that we’ve rediscovered you can’t please all the people all of the time, we race back to individual tooling, each doing one task and one task well, factionalized and repeated in hundreds of tribes. It’s lonely at this extreme and we crave the networking/herding… coda.
This comment is of public service. The depiction of the herd effect is perfect. Thanks for your contribution!
I tend to think about it differently: Some ideas get reinvented and simplified until only the idea is left. And the idea then seems so obvious to everyone that no one considers it necessary to have a reusable implementation. That isn't the same as NIH. It is sharing ideas rather than code.
Perhaps the belt-tightening going at the moment has made people realise how much money they're wasting on Kubernetes et al.
was going to say the same thing - but for ansible.

an inventory file is literally a static list of pets in its simplest form, and with some simple convention you could have a directory per-host with any playbooks required. plus you have docs, community modules, etc.

I came to Ansible from Puppet, buying in to the claims I'd heard about Ansible being so much simpler ("it uses YAML for its config, which is so much simpler than configuring Puppet").

Turns out that, like Puppet, Ansible seems to have been congealed rather than designed, and it's a mess of inconsistent spaghetti code.

All the other config management systems I've tried, from Salt to Chef have exactly the same problem.

I'd be thrilled to find a config management system that actually was simple and elegant.

you are 100% correct that ansible is a mess... congealed is a great way to describe it.
Ansible is like a fifth wheel on a car, since all of the configuration can be done inside of OS packages, and orchestration can be done via SSH (which is exactly how Ansible does it). Put those two together and Ansible is a solution to a non-existent problem.
I'd much rather use Ansible to configure a fleet of identical systems (either all at once or over time) than SSH and configure by hand thanks.
Not by hand! With configuration packages in OS-native format!

1. When a system comes in, it is scanned and entered into the asset management database, which then triggers a process to enter the scanned MAC address into the DHCP, by generating a new DHCP configuration package.

2. the previous version of the DHCP configuration package is upgraded with the new DHCP configuration package.

3. the system is hooked up to the network and powered on.

4. the firmware is permanently reconfigured to boot in this order: 1. HD0 2. HD1 3. network.

5. since HD0 and HD1 are not bootable, the system boots from the network, whereby the infrastructure automatically provisions it with the standard runtime platform, which consists solely of packages in OS-native format, including configuration packages which configure things which all servers have in common.

6. as part of the automatic installation, the server is automatically installed with additional configuration packages based on which profile it is in, turning it into a specific application server.

7. the server comes up after automatic installation, and reports back to the infrastructure that it is ready to serve.

NEVER by hand!