我有一个父模板,该模板带有一个数组(websites
,并使用website
方法多次调用childTemplate(copyIndex()
)来遍历作为a传递的数组中的值。参数。
每个子模板都会在其output
中返回MSI principalId
和outgoingIPAddresses
。
有没有一种方法可以将返回的各个principalId
值组合成一个数组,该数组可由父模板调用的后续子模板使用(以便循环遍历principalId
的结果数组并赋予他们KeyVault
的所有相同权利?
谢谢。
答案 0 :(得分:0)
是的,虽然不是您想要的那样漂亮/容易,但是可以做到这一点。
最简单的方法是使用模板的输出组装所需的值数组。您需要每个模板都采用上一个模板的输出,并将其与自己的输出合并,然后将结果作为输出吐出。示例代码:
{
"name": "reference0", << this one is needed so that the first real one has something to reference, as it cant reference itself
"type": "Microsoft.Resources/deployments",
"apiVersion": "2015-01-01",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "yourtemplate",
"contentVersion": "1.0.0.0"
}
},
"parameters": {
"state": {
"value": []
}
}
},
{
"name": "[concat('reference', copyIndex(1))]",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2015-01-01",
"copy": {
"name": "loop",
"count": "[variables('types')[resourceGroup().name]]"
},
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "yourtemplate",
"contentVersion": "1.0.0.0"
},
"parameters": {
"state": {
"value": "[reference(concat('loop', copyIndex())).outputs.state.value]"
}
}
}
},
和您的状态输出应该只是这样:
"outputs": {
"state": {
"type": "array",
"value": "[concat(parameters('state'), array(your_actual_output))]"
}