Azure 可用性区域参数语法
Azure availability zone parameter syntax
我正在尝试参数化使用可用性区域的 VM 部署。但是,我在部署时不断收到此错误:
''1' 行和'5118' 列中模板参数 'availabilityZoneParameter' 的提供值无效。'
或:
"Deployment template parse failed: 'Error converting value \"[ '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 文件,然后是至少两个也依赖于可用性区域值的链接模板。
对正确语法有什么建议吗?
按照我在网上找的例子,应该是这样的:
"availabilityZoneParameter": {
"value": [ "1" ]
}
另外,应该是数组:
"availabilityZoneParameter": {
"type": "array"
}
因为它不包括数组,而不是看起来像数组的字符串:
参数应该只是?
"availabilityZoneParameter": {
"value": "1"
}
最终语法,对于那些来到这个论坛寻求相同答案的人:
请注意,该值是一个数组而不是字符串,正如贡献者 4c74356b41 在该线程中指出的那样。
原始 azure 参数文件中:
},
"availabilityZone": {
"value": [ "3" ]
}
在 azuredeploy 文件中:
},
"availabilityZone": {
"type": "array"
}
在嵌套模板中调用可用区参数(以存储磁盘资源为例):
"name": "[variables('diskName')]",
"type": "Microsoft.Compute/disks",
"apiVersion": "2017-03-30",
"location": "[resourceGroup().location]",
"zones": "[parameters('availabilityZone')]",
"sku": {
如果使用链接模板,在表达链接模板参数时,我使用了这样的语法:
"avZone": {
"value": "[parameters('availabilityZone')]"
正在导入链接模板中的参数:
},
"avZone": {
"type": "array"
}
然后在链接模板中的资源中,我以与 azuredeploy 模板相同的方式调用参数:
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"zones": "[parameters('avZone')]",
如您所见,我决定不将它变成一个变量,因为这对我来说是不必要的。
我正在尝试参数化使用可用性区域的 VM 部署。但是,我在部署时不断收到此错误:
''1' 行和'5118' 列中模板参数 'availabilityZoneParameter' 的提供值无效。'
或:
"Deployment template parse failed: 'Error converting value \"[ '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 文件,然后是至少两个也依赖于可用性区域值的链接模板。
对正确语法有什么建议吗?
按照我在网上找的例子,应该是这样的:
"availabilityZoneParameter": {
"value": [ "1" ]
}
另外,应该是数组:
"availabilityZoneParameter": {
"type": "array"
}
因为它不包括数组,而不是看起来像数组的字符串:
参数应该只是?
"availabilityZoneParameter": {
"value": "1"
}
最终语法,对于那些来到这个论坛寻求相同答案的人:
请注意,该值是一个数组而不是字符串,正如贡献者 4c74356b41 在该线程中指出的那样。
原始 azure 参数文件中:
},
"availabilityZone": {
"value": [ "3" ]
}
在 azuredeploy 文件中:
},
"availabilityZone": {
"type": "array"
}
在嵌套模板中调用可用区参数(以存储磁盘资源为例):
"name": "[variables('diskName')]",
"type": "Microsoft.Compute/disks",
"apiVersion": "2017-03-30",
"location": "[resourceGroup().location]",
"zones": "[parameters('availabilityZone')]",
"sku": {
如果使用链接模板,在表达链接模板参数时,我使用了这样的语法:
"avZone": {
"value": "[parameters('availabilityZone')]"
正在导入链接模板中的参数:
},
"avZone": {
"type": "array"
}
然后在链接模板中的资源中,我以与 azuredeploy 模板相同的方式调用参数:
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"zones": "[parameters('avZone')]",
如您所见,我决定不将它变成一个变量,因为这对我来说是不必要的。