我知道这是一个老问题,但对于其他人来说,截至 2018 年 3 月 12 日,你绝对可以做到这一点。
您需要确保您的输出按照Microsoft 文档格式化输出变量,其格式大致为
"outputs": {
"resourceID": {
"type": "string",
"value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
}
}
然后,您可以通过使用具有以下格式的资源引用引用部署来在模板中使用这些输出
reference(resourceName or resourceIdentifier, [apiVersion], ['Full'])
请注意,您需要提供 api 版本,因为部署可能使用与您的父模板使用的不同的 api 版本。
然后,您的参考将类似于以下内容
{
"comments": "This would have an output named myOutput you want to use",
"apiVersion": "2017-05-10",
"type": "Microsoft.Resources/deployments",
"name": "my-deployment",
"resourceGroup": "...",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "...",
"contentVersion": "1.0.0.0"
},
"parameters": { }
},
{
"comments": "This makes use of myOutput from my-deployment",
"apiVersion": "2017-05-10",
"type": "Microsoft.Resources/deployments",
"name": "my-dependent-deployment",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "...",
"contentVersion": "1.0.0.0"
},
"parameters": {
"myValueFromAnotherDeployment": { "value": "[reference('my-deployment', '2017-05-10').outputs.myOutput.value]" }
}
}
}
请注意值的稍微尴尬的“重新打包”,我们将myOutput.value
其用作依赖部署的输入,并将其放入带有 key 的对象中"value": "...."
。这是因为 ARM 参数必须具有“值”属性才能有效。
如果您尝试直接使用输出,您将收到无效的模板错误(因为output
变量具有“类型”,而这不是 a 中允许的键parameter
)。这就是为什么您需要获取该value
属性,然后将其放回value
下游模板中。