I am trying to understand how IoT Edge devices deploy modules given a particular device deployment policy. Here is my test case:
- On my development machine, I created a custom IoT Edge module (essentially the default CModule example from VS Code). I manually pushed the module to my Azure Container Registry and manually tagged it with 1.0.1 and with 1.0
- I created a deployment policy which include my custom module like so
"modules": {
"MyModule": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "<my_acr.azurecr.io>/mymodule:1.0",
"createOptions": "{}"
}
}
}
- I created an IoT Edge device which is deployed with the above custom deployment policy (I'm using tags to do that). I can see on my test machine that the /mymodule:1.0 docker image becomes available. The docker ImageID on the test machine matches the ImageID
- On my development machine, I then modify the module very slightly and rebuild it. I tag the new module docker image with 1.0.2 and 1.0 and push the new tags to ACR. I can see in the portal that the new tags show up.
- However, my test machine never gets the new version of the module. Docker still shows the old ImageID.
So what is the correct way to have my existing deployment policy force an update of the module version on my device? I thought that based on https://learn.microsoft.com/en-us/azure/iot-edge/how-to-update-iot-edge#understand-iot-edge-tags my module is using a rolling tagging scheme.