Hi,
I have a virtualMachineScaleSet defined to launch Ubuntu machines with network interfaces that become members of a Load Balancer's backend pool.
I use the osProfile.customData to seed some minimal configuration to the Ubuntu machines which is then consumed by cloud-init when the machine is provisioned.
I later need to update the customData so that new machines provisioned during a scaling event will be configured slightly differently. However, deploying an updated ARM template fails with the message:
PropertyChangeNotAllowed: Changing property 'customData' is not allowed.
In AWS (with which I am more familiar) this is allowed and simply creates a new LaunchConfiguration which is used for new machines. Obviously existing machines are unaffected.
Given that Azure's Scale Sets won't let me update this property on an existing Scale Set, I decided to try defining a new Scale Set with the new customData value. Unfortunately this fails with the message:
VMScaleSetAllocationError: Virtual Machine .../providers/Microsoft.Compute/virtualMachines/foo_1 is using different Availability Set than other Virtual Machines connected to the Load Balancer(s) fooLB.
So, given that Scale Sets imply their own Availability Set, it seems my next options are either:
- Remove the existing machines from the load balancer first, or ...
- Replace the load balancer too.
Either of these will lead to a short down-time.
Is there another option that I have missed that will avoid down-time? Is this a limitation of Scale Sets being in Preview that will be addressed later?
Regards,
Jaosn