I felt it was worth clarifying the status of Host OS updates when using the openBalena ecosystem as there are a couple of conflicting posts which are being referenced when users ask about the feature.
As per the openBalena repository README (see here) the Host OS update feature is not currently supported, however I acknowledge that it is technically possible to update a current balenaOS device remotely. The reason that we do not support this is due to the fact that the process is being changed in the future for a more robust mechanism.
The new process, which is being worked on, will be consistent across balenaCloud/openBalena and follow more closely the application update model. It will be a far more controlled process leading to safer OS updates and less manual interventent. The plan is to allow these updates to be controlled like the application services are meaning pinning a device to an OS release, rolling back to previous releases etc, should be possible.
Hi Balena-Team,
some time passed by and I am quite curious to hear about the progress on this topic.
We are very excited about BalenaOS and consider to use it within a project (custom board) running already. The only disadvantage that blocks us is the lack of support for host app updates via openBalena. Therefore it would be great to get an update as well as an indication of what the plannings (timeline) are.
I would be interested as well. Is @richbayliss who started this thread still working for/active in Balena, or is there someone with his expertise in Balena?
Also, if wanting to contribute, is there documentation on the Host OS Update feature - how it works?
Asides, Host OS updates should not be tied to the dashboard in any way, even that would need an API to the balena server(s), so it looks like open-balena is intentionally a different code base than what balena uses for the cloud. True or false?
… looks like open-balena is intentionally a different code base than what balena uses for the cloud. True or false?
openBalena is a subset of the balenaCloud code base and is missing features such as device proxy, which is used for the current OS HUP process (i.e. there is an entity that terminals into the hostOS and runs update commands). This is one of the reasons oB is still beta, since we do not (can not) offer the current HUP architecture in the product variant.
We are working on a target state based HUP process, which will not require a device proxy/SSH to initiate this flow. Once this is available openBalena gets HUP functionality by default.
For anyone interested in automated host updates with openbalena, we have developed a layer on top of meta-balena (the host OS base layer) which provides this functionality. We are working to release this to the open source community, and it functions alongside open-balena-admin which is necessary to create custom device types (if you have custom hardware) as well as the balena_os user needed for the automated OS build process using the bundled jenkins build scrips. So bottom line is that as long as you are using (or willing to use) custom host OS builds, this is possible and currently working in a production environment - and hopefully coming your way soon.
is there any update on this or a timeline as to when it will be available for openBalena?
One update could be that we have introduce the v3 target state into https://github.com/balena-io/open-balena-api/pull/687 . Now all other bits and bytes need to be developed and find their places. As of now we may not be able to communicated any detailed timeline.
I want that when I deploy changes to my fleet, all my online devices to have new changes of the balena app.
PS. - For the image creation I am using this command: DEBUG=1 balena preload ./image.img --fleet <app-name> --splash-image logo.png --commit latest
because the device at first it’s not connected to the internet, only afterwards the user would specify his router credentials and the Raspberry Pi would get the internet connection.
As far as I know, the preload command only adds the containers of the release of the specified fleet to the image, it doesn’t configure the image to register with that fleet. So you’ve to configure it first using balena os configure as mentioned in my previous post. Try that first, see if it works, and if so, you can then use the preload command to test if the containers will also be present at boot time.
But I’d try the balena os configure command first, flash the image and boot the device and see if it comes online and register itself with the fleet.
Maybe if you’re still having issues, open a new topic describing your problem. Discussing it here further will pollute this topic