CFEngine's Star Trek and AI Origins (2023)
mark-burgess-oslo-mb.medium.com
mark-burgess-oslo-mb.medium.com
They had "Bootstrapping an Infrastructure" in (twelfth) LISA (1998):
* http://www.infrastructures.org/papers/bootstrap/bootstrap.ht...
* https://www.usenix.org/conference/lisa-98/bootstrapping-infr...
They started the concept in 1990s using make(1) files as their state engine because there was nothing else available ("Step 11").
That doesn’t sound unreasonable, even now…
But what do you do if you have ~0 unix workstations? Mobile clients, BYOD, offsite IaaS/PaaS, PKI certs for an https-only world, 3rd party APIs, file share between windows/mac clients all make things more complex. Do you want your infra to retrieve packages over port 80 until you can setup the CA to get trusted 443? Do you want to keep API keys in git until you can setup the vault-server? Are there any services you should NEVER authenticate through Okta?
Would be neat to see a modern bootstrap walkthrough from "founders use gmail and a Wix.com site" to a zero-trust(ish) set of company-hosted services that 100 remote/on-prem employees can access with a single credential set from devices including company workstations and personal laptops.
Ultimately I ported over to Ansible because that's what I need to maintain fluency in for professional reasons, but I really lament it. It's a slog through mud compared to the clarity that is CFEngine.
I'm curious how it compares.
The core was (mostly) solid, but if you need anything done on it do buy the time of some consultant working on it already.
It's not as accessible as ansible, but definitely more accessible than cfengine. At least coming from Ansible.
I really was not a fan. I think one of the core problems I ran into was that the tool attempted to layer on rpc behavior to what was fundamentally a broadcast.
So you'd apply something to everything with a web role. The tool would attempt to make it appear as if you executed apply on n nodes and return after n responses. But since this was all just a broadcast what really happened is the tool dropped a message on the bus and then guessed how many responses it would get. If it guessed wrong the cli invocation would just hang.
The reality was that it was unstable, and use cases that needed the broadcast system were rare and often contrived. Agents crashed or hung constantly. We ended up mostly using the same features Ansible already had.
I might PoC it if I was going to deploy at a scale large enough where Ansible being centralized was an issue (i.e. there are so many hosts that it takes hours for Ansible to run). I'd have to see whether the pain of managing agents was better or worse than trying to shard Ansible. My suspicion is that it isn't too hard to shard Ansible deployments, but I could well be wrong, I haven't tried.
Have used it at AT&T and it's been great.
Especially since the Enterprise edition is free for up to 25 nodes.
One can use CFEngine for managing a dozen of Linux boxes very efficiently!
In my workplace, spending some time packaging our app using FPM made our Ansible playbooks a lot simpler. Config management and packaging work great together.
> Today, CFEngine is widely known as the configuration management tool that was replaced by Puppet, Chef, and then Ansible.