具有多个扩展和多个 VM 的 Azure ARM

Azure ARM with Multiple Extensions and multiple VMs

我有点难以理解这个包含多个“Microsoft.Compute/virtualMachines/extensions”多个虚拟机的 Azure ARM 模板:

kafka-on-ubuntu/azuredeploy.json

假设将有 4 个 VM:分别 1 个用于 Zookeeper,3 个用于 Kafka 集群,如何确保 Zookeper 的扩展(+脚本)将 运行 恰好在那个 Zookeper VM 上,以及如何确保 Kafka 集群的扩展 (+script) 恰好在这 3 个 Kafka 虚拟机上 运行? 我更倾向于相信 所有 虚拟机上的每个扩展 运行。

这种行为似乎没有很好的记录,但是从 Windows custom script extension 的文档页面:

The name of the resource has to be in the format virtualMachineName/extensionName, if this extension is used as a standalone resource in the Azure Resource Manager template.

这似乎暗示自定义脚本扩展的执行位置是基于名称的。我想 Linux 虚拟机也是如此。

对于您正在查看的特定示例,其中一个虚拟机的名称是:

"name": "[concat('zookprvm', copyindex())]",

而扩展名是:

"name": "[concat('zookprvm', copyindex(), '/installzoo')]",

因此扩展名称的前缀必须与 VM 名称相同。