Building the deployment tool I wish I had

40 points by ruuda


winter

Only tangentially related, but, thank you for not putting LLM-generated text anywhere near this. It’s very refreshing.

Also, the tool looks very nice and well thought out, though I think I’ll stick with NixOS. :D

wofo

I'm definitely going to try this out! It looks like a more polished version of a system I built for myself to deploy systemd-based services.

EDIT 1: just went through the tutorial and it looks great. What would be a good way to deal with local state? For instance, where should be an sqlite database for an app be stored? I couldn't find that in the docs.

EDIT 2: is there a way to transfer the app's binary to the server, for it to be used in the systemd unit? If not, how are you dealing with binary distribution?

taras

Could you tell me more about how and why you use EROFS?

yorickpeterse

Another approach is to use bootable containers, which is quite nice. The only thing that I'm still missing there is something to actually run the bootc update --apply on the appropriate hosts. There's a mechanism for auto updates but this isn't coordinated and that's not something you want in a cluster. Right now I just do this by hand, though it should be easy enough to script out in the future (given that the bootc command is really all you need to run).

ratsclub

What a coincidence! The post showed up while I'm discussing simple deployment strategies with a friend of mine and to be fair, this is really close to what the conclusion we were reaching!

However, may I ask you how do you manage secrets on this setup?

mdaniel

Prompting the deployment tool I wish I had

https://codeberg.org/ruuda/deptool#llm-usage-disclosure:~:text=The%20code%20is%20primarily%20written%20by%20LLMs

but I guess in some sense good for them that they were able to convince the floats to write rust

marcecoll

This looks great and it may be exactly what I needed for a project I'm setting up!

marcecoll

How do you handle secrets with this? What's your preferred workflow? Do you embed them in the EROFS image? or do you inject them with systemd?

janus

If it only keys on OS and CPU architecture, how does it know whether extensions like AVX2 are available for use or not? That would not be part of the CPU architecture string.

No assumptions about what’s available except the kernel

Surely there must be some assumptions since the Linux ABI expands over time with new syscalls. If the remote host has a very old kernel, surely the binary would try to access syscalls that do not exist?