Ask HN: A reasonable deployment solution for small-scale kiosk apps?

4 points by c61746961 ↗ HN
We need to find a solution for the deploy, monitor, update cycle for small-scale, multi-platform (mac, windows, linux), LAN-bound kiosk apps. So far we have survived writing our own tooling for specific tasks but it's quickly getting out of hand due to the increasing amount of clients we need to support.

After an admittedly cursory examination of a few popular solutions (docker, nomad, kubernetes) it seems their use is mostly concerned with the big-scale infrastructure side of things, and so far it's unclear to us whether they can be adapted to ad-hoc distribution / versioning on LAN and local storage.

If anyone is able to point us in the right direction it would be greatly appreciated.

3 comments

[ 3.0 ms ] story [ 18.9 ms ] thread
I had a project last year where we had to deploy to a few executives' laptops, running in a company that was so paranoid they had no Internet connection. But they expected to release this app as a SaaS product eventually, and so wanted it built it with a standard webapp stack (Rails/Postgres). For the initial install and later updates, they would temporarily bring the laptops to a separate location to get online. A couple laptops were running Windows and some OS X.

For the laptop deployment, I wrote a Chef script to provision a Vagrant VM, then saved it as a .box file. We delivered the .box file along with short .bat/.sh scripts to start it up. It sometimes felt like we should have used something trendier, like Docker, although Docker seemed like a bad fit both because of the Windows/OS X requirement and the multiple processes (Postgres, Unicorn, Nginx, background jobs....).

They actually volunteered how impressed they were by the smoothness of the install process. (!)

We had a sh/bat file to run Capistrano for app updates, so as long as no system changes were needed, that was very easy. Delivering system updates (e.g. now we need ImageMagick installed....) was painful though. A couple times we actually abused Rails database migrations as a poor-man's configuration management tool. :-) The .box file was very large, and we would have to replace the old VM without wiping out the database. I think there are easier ways to solve this problem than we used, e.g. Packer, but I wasn't aware of them then. I'm still not 100% sure they would have worked for us.

Anyway, this seems kind of similar to your LAN-bound kiosks.

I would definitely not use Kubernetes, which is really intended for a datacenter. I haven't tried Nomad so I can't speak to that. I might be willing to try Docker nowadays---I think it would allow incremental system updates and so alleviate the pain of moving big .box files, and you could keep the database outside of the image. I would still probably run it in a Linux VM though, since I don't really trust Docker for Windows/Mac yet.

But in general, I think the new devops tools we read about on Hacker News are intended for a different use-case than yours, so I would not feel bad for passing them by. I certainly sometimes questioned my decision to avoid Docker, and got asked by a lot of people why we weren't using it (none of whom had experience with it). But I think it was the right decision to use older, more battle-tested tools, and ones that were a better fit for what we had to do. On-prem software is really a whole different beast from webapps you host. It requires a different QA process, a robust install tool, and a good plan for handling updates.

Thanks for the detailed answer, going to check those tools out no doubt.
Try CFEngine or similar tools. They have some learning curve, but they do well also for small number of machines (i.e. don't add too big overhead for operator).