4

I have a small growing fleet of IoT devices (upboards). They are all connected via ethernet to a server. Each device runs the same set of applications (java, python, nginx, ffmpeg) with their respective configuration. These devices are the "production" devices.

I have a single development device on which I prototype new applications, change configurations or modify application code.

The IoT devices and server both run CentOS 8.

What would be recommended ways of managing the fleet and deploying the most up to date code to all of the devices, preferably with some form of version control. My first idea would be containerise everything and orchestrate it with something like swarm or kubernetes but I feel that is just too much overkill.

4 Answers 4

4

Why not set up your own RPM repo? You just push new packages there and then call yum regularly to update your devices.

3

What you are missing is all what's called DevOps.

You need to choose a CI/CD tool, meaning Continuous Integration and Continuous Deployment.

You can use Jenkins or Gitlab runner for instance.

On my project I'm using Gitlab runner, basically whenever I push code to the master branch, bam all the fleet get's updated using a script.

You can also look into Ansible scripts that are used to managed fleets of Linux servers.

2

If you go the container route you can outsource all the management to balena.io especially if the devices end up getting deployed across the internet.

They support building and managing versions deployed to the devices over a secure built in VPN to their cloud services. This also includes remote console access via the their web console.

The build service works by acting as git remote endpoint, so you can develop locally then git push to their build servers to built the containers.

Balena offer free accounts, paid services and the code is all opensource if you want to deploy the whole thing yourself (probably only for large scale deployments that want to customise).

If this is always just going to be local then as @YCN- said a local GI pipeline and some scripts should be all you need.

2

Why don't you use Github for that like Mycroft AI, you can make your device continuously or periodically look for repo update and if there is one then the device will automatically do a git pull and update your software. Github is free and also there is a private category and you can purchase a premium one for much more security and things. You can manage your versioning and all.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.