It would be good to be able to create a cloud-init script per application. At the moment the only way to use cloud-init is per model.
The idea here is to be able to do custom configuration (fine granularity) of a machine based on the application. The example I have and which I deployed is configuring static ip addresses for juju lxd machines. I know this is not yet supported but I was able to do it through cloud-init and lxd profiles. I also did that because Link local subnets are not supported by Juju. The assignation of ip addresses on specific interfaces is based on the application (Example, I’m not able to do the same logic for prefix assignation for ceph-osd application and ceph-mon application). It would be good to have a cloud-init based on the application in this situation. Here is a cloud-init example that I used for this deployment: