I've been running a Raspberry Pi on my boat for a few seasons now. The Raspbian installation on that was created with trials and tribulations: install this, install that, troubleshoot, configure this, configure that. The end result was a mess I didn't feel very comfortable with, but it worked. Furthermore it was not reproducible: if somebody else or I would want to set up a new Pi (or some other computer for that matter) like the one I have, only with newer Raspbian and other stuff, it would be the same process all over again.
Over the last few years several solutions to this mess have emerged. This field is called provisioning and is used to provision computers: set up the software stack that is needed for a purpose (my definition, google for others..).
Provisioning can turn a freshly installed computer with no application software into a functioning server, doing something useful.
And it can do it as many times as you want. Just initialise it to a known state (install a minimal operating system) and run the provisioning scripts or recipes.
Or it can it to as many machines as you want, initialising a whole server farm.
What does this have to do with Signal K?
Installing Signal K software involves a set of manual steps. Configuring the Pi to act as a wifi hotspot another. Installing Virtual Private Network (so that you can connect to your boat from anywhere) and Dynamic DNS (so that you have an address to connect to) software some more. The net is full of tutorials for each of these tasks, but you need to do the legwork & trial and error to find the correct ones.
And after all that work you still can't do it easily to set up another one for a friend.
With a provisioning tool called Ansible the process goes like this
(0) install Ansible
(1) download marinepi ansible scripts
(2) fire up your fresh Pi & find out its ip
(3) run initial setup
(4) run provisioning with Ansible
The first time around step 1 is extra, but for later updates you can skip to step 2 and have an updated installation delivered to your Pi.
The Ansible scripts we've created are available at
https://github.com/tkurki/marinepi-provisioning and include options to install the Signal K node server. As usual with open source software this is work in progress and you are very welcome to join the development effort, in case you find this useful