We use a GitOps pipeline to provision Mender Device configuration (side note: would be awesome if Mender provided a Pulumi Package!). This includes a tag deploymentGroup
that is used to include the device in a dynamic group which are the target of deployments. To make it concrete, two commonly used deploymentGroup
s are:
ExternalBeta
InternalInventory
It’s common that InternalInventory
gets a newer version of SoftwareX than ExternalBeta
(e.g. to have access to new manufacturing QA functionality).
When the device is ready to ship to a customer, our GitOps pipeline will set the deploymentGroup
to ExternalBeta
(among other configuration/tags). If a device is RMA’d, it will get put back in InternalInventory
and we would expect that version of SoftwareX gets deployed appropriately.
What’s the right way to handle this in Mender? Our original approach/thinking was that simply having indefinitely running deployments targetting dynamic groups would allow us to move devices freely from one dynamic group to another and have deployments that would do the Right Thing. But after seeing the actual behavior and then re-reading the docs on dynamic groups (“principle of guaranteeing a predictable”, “won’t take part in the same Deployment twice”), it doesn’t seem to be so simple.
We are on a hosted Enterprise plan.