I just finished a project with Azure IotEdge, which I quite liked. In azure you can manage a number of edge machines. You can assign which docker containers should run on which machine. This is also possible while the machine is offline or has not ever connected yet. The update is applied the next time the machine comes online. It is also possible to deploy updates to groups of machines, which is very helpful when several hundred devices need to be managed.
For my next project I would love to have a similar solution. Unfortunately using Azure or another cloud is not an option for security reasons. The project uses linux boards, so using docker is not a problem.
So my question is: Is there a solution for managing software updates on edge machines that works similar to IotEdge, but is installable on-premise? It does not necessarily have to be docker based.
What I already looked at:
- Ubuntu Core. AFAIK this has some way to centrally declare which “snaps” should run on a given machine. Unfortunately there is no way to host a private snap repo, so this is not usable in my situation.
- Portainer. It has an “edge” mode for machines that may go offline. I think it is only possible to manage edge devices while they are online, but I’m not sure – the edge functionality is super new, so documentation is sparse.
- Mender, Bithawk, SWUpdate, OSTree. These work on a more low level basis, replacing or updating whole partitions. This seems to add some complexity compared to the docker based approach – but it allows updating the linux kernel as well, so maybe not that bad?
Thank you for your comments!
submitted by /u/chocobor
Original article: How do you manage software updates on IoT or edge devices