我正在尝试参数化使用可用区的 VM 部署。但是,我在部署时不断收到此错误:
'在'1'行和'5118'列中为模板参数'availabilityZoneParameter'提供的值无效。'
或者:
“部署模板解析失败:'错误转换值\“['1']\”以键入'System.String[]'。路径''。'。”
参数文件语法目前为:
"availabilityZoneParameter": {
"value": "[ '1' ]"
}
然后我将它作为参数移植并将其转换为变量,然后将其导出到其他链接模板以及在初始构建模板中使用它。
部署文件语法中的参数:
"availabilityZoneParameter": {
"type": "string"
}
原始部署文件语法中的变量:
"availabilityZone": "[parameters('availabilityZoneParameter')]"
原始部署文件中的磁盘创建语法:
{
"name": "[variables('diskName')]",
"type": "Microsoft.Compute/disks",
"apiVersion": "2017-03-30",
"location": "[resourceGroup().location]",
"zones": [ "[variables('availabilityZone')]" ],
"sku": {
"name": "Standard_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": 1023
}
},
原始部署模板中的 VM 参数,该参数输入链接模板:
"name": "PAN-VM",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2018-05-01",
"dependsOn": [
"[concat('Microsoft.Compute/disks/', variables('diskName'))]",
"Microsoft.Resources/deployments/SettingUpVirtualNetwork",
"Microsoft.Resources/deployments/SettingUpPublicIP",
"Microsoft.Resources/deployments/SetupNetworkInterfaces"
],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(variables('virtualMachineTemplate'), parameters('artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.5"
},
"parameters": {
"avZone": {
"value": "[variables('availabilityZone')]"
虚拟机模板参数:
"avZone": {
"type": "string"
虚拟机模板变量:
"variables": {
"apiVersion": "2018-04-01",
"availabilityZone": "[parameters('avZone')]"
VM模板资源(调用参数):
"resources": [
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"zones": "[variables('availabilityZone')]",
"plan": {
"name": "[parameters('imageSku')]",
"product": "[parameters('imageOffer')]",
"publisher": "[parameters('imagePublisher')]"
},
"properties":
对于上下文 - 这里有几个文件在起作用。一个初始的 azureparameters 文件、一个 azuredeploy 文件,然后是至少两个也依赖于可用区值的链接模板。
关于正确语法的任何建议?