While I know most people don’t share my love of chef/cinc over ansible/puppet/whatever so that part won’t be useful but it could easily be taken out and replaced by a different mechanism the cinc is used for there: actually triggering the download of the new version and getting it running.
But the rest could be useful…for any of those three tools you point it at the cluster and it discovers the topology: all the nodes in the cluster, which ones are severs/clients, which server is the leader, etc. Then it uses that info to do a controlled restart one node at a time of the full cluster after downloading the new version…if anything fails it will stop. State is maintained in a yaml file so an upgrade can be restarted at any time.
Just used it to update all three in my homelab. Worked flawlessly. I know it doesn’t cover every situation/setup…some I’d like to add so contributions welcome! bugs, issues, complaints, PRs, insults are all welcome haha. If anybody else used or contributed issues to it i’d probably be more tempted to work further on it and make it more flexible and not locked to my use case as much…I’d even change the name to remove “munchbox” from the name (munchbox is what i call my cluster, I named it after my dog Munch - who himself is named after the homicide/law-and-order character - back when it literally WAS just one box and not 6+ machines at home and a few cloud vms joined over wireguard haha)
…but I still feel like it might be interesting/useful to somebody out there if they just replaced the cinc part with whatever their requirements are to do an upgrade.
cheers.
Nomad 4 lyfe!