Search code examples
azureazure-rm-template

Azure mainTemplate.json - access output from templateLink


I have a JSON deployment template with something like:

{
    "type": "Microsoft.Resources/deployments",
    "apiVersion": "2019-10-01",
    "name": "parameters('storageAccounts')[copyIndex()].name",
    "resourceGroup": "[resourceGroup().name]",
    "properties": {
        "mode": "Incremental",
        "templateLink": {
            "uri": "'https://foo.blob.sa/StorageAccount/azuredeploy.json"
        },
        "parameters": {
            ...
        }
    },

azuredeploy.json creates the storage account then has something like:

"outputs": {
    "storageAccountWebEndpoint": {
        "type": "object",
        "value": {
            "tags": { ... },
            "type": "string",
            "value": "[reference(parameters('storageAccountName')).primaryEndpoints.web]"
        }
    },

Is it possible to leverage the output from the linked template to set a property for another resource in my deployment template?
If so, what would be the syntax?

(Assume I have dependsOn set correctly.)


Solution

  • You can use the function reference() to get the output in the link template:

    "[reference('deploymentName').outputs.propertyName.value]"
    

    But note that:

    When getting an output property from a linked template, the property name must not include a dash.

    Get more details here.