
Ask HN: A reasonable deployment solution for small-scale kiosk apps? - c61746961
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&#x27;s quickly getting out of hand due to the increasing amount of clients we need to support.<p>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&#x27;s unclear to us whether they can be adapted to ad-hoc distribution &#x2F; versioning on LAN and local storage.<p>If anyone is able to point us in the right direction it would be greatly appreciated.
======
dozzie
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).

------
pjungwir
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.

~~~
c61746961
Thanks for the detailed answer, going to check those tools out no doubt.

