ネストされたテンプレートの2つのレベルを持つ親テンプレート、azuredeploy.json-> vmReferenceTemplate.json-> datadiskreference.json第2レベルから3に必要な値を渡すとき、ただし、第1レベルから第3レベルのネストされたテンプレートにまったく同じ値を渡すときは機能しません。私はnumDataDisksの値をazuredeploy.jsonからdatadiskreference.jsonにしたいと思います。私は非常に複雑なテンプレートを持っています。それを動作させるには、第1レベルの値を渡す必要があります。ここで動作するストライプ版です。 azuredeploy.json:Azure RMテンプレート。複雑な値を第3レベルのネストされたテンプレートに渡す
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"parameters": {
,,,
"numberOfVMs": {
"type": "int",
"defaultValue": 8,
},
"numberOfDataDisks": {
"type": "array",
"defaultValue": [
2,
1,
3,
1,
1,
1,
1,
1
]
},
...
},
"resources": [
{
"name": "[concat(parameters('vmName'), copyIndex(1),'-','reference')]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2016-09-01",
"copy": {
"name": "vmReferenceTemplateLoop",
"count": "[parameters('numberOfVMs')]"
},
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('vmReferenceTemplateTemplateFolder'), '/', variables('vmReferenceTemplateTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"numDataDisks": {
"value": "[parameters('numberOfVMs')]"
}
}
}
}
],
...
vmReferenceTemplate.json:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"parameters": {
...
"numberOfVMs": {
"type": "int",
"defaultValue": 2
},
"numberOfDataDisks": {
"type": "array",
"defaultValue": [
2,
1,
3,
1,
1,
1,
1,
1
]
},
...
},
"resources":
{
"apiVersion": "2016-09-01",
"name": "[parameters('dataDisksReferenceTemplateName')]",
"type": "Microsoft.Resources/deployments",
"copy": {
"name": "dataDiskReferenceLoop",
"count": "[parameters('copyNestedReference')]"
},
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[variables('dataDiskReferenceTemplateUri')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vmName": {
"value": "[parameters('dataDisksVMnameReference')]"
},
"storageAccountName": {
"value": "[variables('var_storageAccountName')]"
},
"numDataDisks": {
"value": "[parameters('numberOfDataDisks')[copyIndex()]]"
},
"sizeOfEachDataDiskInGB": {
"value": "[variables('sizeOfEachDataDiskInGB')]"
}
}
}
}
],
...
そして、これは私が第三レベルに1レベルから値を渡すためにしようとしている方法ですが、それは誤り"Deployment template validation failed: 'The provided value for the template parameter 'numDataDisks' at line '36' and column '22' is not valid.'."
azuredeployで失敗します
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"parameters": {
,,,
"numberOfVMs": {
"type": "int",
"defaultValue": 8,
},
"numberOfDataDisks": {
"type": "array",
"defaultValue": [
2,
1,
3,
1,
1,
1,
1,
1
]
},
...
},
"resources": [
{
"name": "[concat(parameters('vmName'), copyIndex(1),'-','reference')]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2016-09-01",
"copy": {
"name": "vmReferenceTemplateLoop",
"count": "[parameters('numberOfVMs')]"
},
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[concat(parameters('_artifactsLocation'), '/', variables('vmReferenceTemplateTemplateFolder'), '/', variables('vmReferenceTemplateTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"numDataDisks": {
"value": "[parameters('numberOfDataDisks')[copyIndex()]]"
}
}
}
}
]
...
vmReferenceTemplate.json .json:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"parameters": {
,,,
"numberOfVMs": {
"type": "int",
"defaultValue": 2,
},
"numberOfDataDisks": {
"type": "array",
"defaultValue": [
2,
1,
3,
1,
1,
1,
1,
1
]
},
...
},
"resources": [
{
"apiVersion": "2016-09-01",
"name": "[parameters('dataDisksReferenceTemplateName')]",
"type": "Microsoft.Resources/deployments",
"copy": {
"name": "dataDiskReferenceLoop",
"count": "[parameters('copyNestedReference')]"
},
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[variables('dataDiskReferenceTemplateUri')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vmName": {
"value": "[parameters('dataDisksVMnameReference')]"
},
"storageAccountName": {
"value": "[variables('var_storageAccountName')]"
},
"numDataDisks": {
"value": "[parameters('numDataDisks')]"
},
"sizeOfEachDataDiskInGB": {
"value": "[variables('sizeOfEachDataDiskInGB')]"
}
}
}
}
]
...
あなたは1> 2> 3の値を渡していると言っていますが、それは子供の親から適切に伝播しませんか?また、MSはテンプレートの2つのレベルを使用することをお勧めします;)あなたは1> 3、3対2の出力を考慮しましたか?テンプレートには2つのレベルしかありませんか? – 4c74356b41
はい1> 2> 3は合格していません。私は2つのレベルは、コピーVM(コピーVMの場合はネストされたテンプレートでのみ行うことができます)をコピーし、そのコピーVMに可変データ量のディスクを渡すためにkeyvaultsを渡しているので、私にとってはオプションではないと思いますコピーVMの場合でもネストされたテンプレートで実行されます)。 – Max
私は今は時間がありませんが、明日これに戻り、私が何を意味するかを見せます。 – 4c74356b41