Ask HN: How do you manage on-prem deployments?
I've recently started a little home-lab with a few refurbished dell rack servers, and wanted to ask about other peoples experiences with managing software deployments. Each server runs Debian, and I want to be able to automatically deploy & run new code in a clean, easy to manage way. Ideally, each server would run identical software.
A few ideas I had:
- https://equinox.io is a good option - $29/mo for automatic release channels, deployments, etc.
- Periodic clone from GitHub is another solution here - every x minutes, clone, build and replace if needed. This option works great, but can lead to some annoyances.
- I'd guess the simplest way is to write a small script which copies the binaries over to all the machines, then restarts the servers. This is fine I guess...?
Has anyone else worked on something similar? How did you / do you automatically update the binaries running on your on-prem servers?
11 comments
[ 561 ms ] story [ 140 ms ] threadThe hardest part is getting all the debian/* files right. Recently, I tried to convert a 3rd party tar.gz into a .deb but failed. The documentation isn't great. I think someone on our team mentioned using fpm, but I've not tried it personally.
I think our command is just 'dpkg-buildpackage -us -uc $@', but like I said, prepping all the required files for that to just work isn't my area of expertise.
It's no more difficult than any other set of build operations.
[0] - https://www.debian.org/doc/manuals/maint-guide/
[1] - https://www.aptly.info/doc/overview/
You can always go with the Bash / Python scripts, but hey, Ansible is really cool! I'd give it a try even for small things. I use it to get in touch with my home RaspberryPi cluster.
The above doesn't make you free from knowing how your operating systems work, BTW! That's a must.
Have fun!
vSphere is the fabric that connects everything, packer builds the machine images, tf/govc deploys.
To be honest though these days it's more for standing up K8S clusters, workloads are managed via kube manifests and less directly on the vm level.
That being said, K8s is definitely an amazing technology, and I will continue to follow it and other similar initiatives. Some of Kelsey Hightower's talks with K8s are really well done and do a great job showcasing its potential!
I do roughly this. custom application is rigged to run as a service on debian , managed by systemd. I.e. path of least resistance, app is run in idiomatic way by the operating system. I have an ansible script to copy over a new version, ensure all dependencies are installed using apt, run admin tasks to update anything that needs updating in database, then restart the service to pick up the new version of application code. It is a bit sloppy & doesn't automate everything but does automate the common path for upgrading an application code change to an existing deployment.