ARM模板多虚拟机域加入扩展部署失败问题求助
ARM模板虚拟机域加入扩展失效修复方案
问题描述
尝试通过ARM模板部署2台(后续将扩展至更多)虚拟机并加入域,虚拟机可正常部署,但域加入扩展的配置行"name": "[concat(variables('sqlNamePrefix'), padLeft(copyIndex(0),2, '0'), '/JoinDomain')]"无法正常生效,多次尝试其他配置未解决。
错误原因分析
- 硬编码
copyIndex(0):扩展名称中固定使用copyIndex(0)会导致所有扩展实例都指向同一台虚拟机,无法跟随循环匹配对应虚拟机。 - 命名规则不一致:虚拟机名称使用
copyindex()生成(如prefix0、prefix1),但扩展名称用padLeft(copyIndex(0),2,'0')生成prefix00,两者命名不匹配导致扩展无法关联到正确虚拟机。 - copy循环
count值类型错误:原代码中count为字符串"2",应改为数值类型2避免解析异常。
修正后的扩展配置代码
{ "apiVersion": "2016-03-30", "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('sqlNamePrefix'), copyindex(), '/JoinDomain')]", "location": "[resourceGroup().location]", "copy": { "name": "DomainJoinLoop", "count": 2 }, "dependsOn": [ "virtualMachineLoop" ], "properties": { "publisher": "Microsoft.Compute", "type": "JsonADDomainExtension", "typeHandlerVersion": "1.3", "autoUpgradeMinorVersion": true, "settings": { "Name": "[parameters('domainName')]", "User": "[concat(parameters('domainName'), '\\', parameters('adminUsername'))]", "OUPath": "[parameters('ouPath')]", "Restart": "true", "Options": "3" }, "protectedSettings": {"Password": "[parameters('adminPassword')]"} } },
可选:统一命名为两位数字格式
若需要虚拟机名称为两位数字(如prefix01、prefix02),需同步修改虚拟机配置的命名规则:
虚拟机部分修改
"name": "[concat(variables('sqlNamePrefix'), padLeft(copyindex(),2, '0'))]", // ... "osProfile": { "computerName": "[concat(variables('sqlNamePrefix'), padLeft(copyindex(),2, '0'))]", // ... }
扩展名称对应修改
"name": "[concat(variables('sqlNamePrefix'), padLeft(copyindex(),2, '0'), '/JoinDomain')]",
内容的提问来源于stack exchange,提问作者Roelf Zomerman
相关产品推荐
相关产品推荐

