Uitvoer in ARM-sjablonen

In dit artikel wordt beschreven hoe u uitvoerwaarden in uw Azure Resource Manager sjabloon (ARM-sjabloon) definieert. U gebruikt uitvoer wanneer u waarden van de geïmplementeerde resources moet retourneren.

De indeling van elke uitvoerwaarde moet worden opgelost naar een van de gegevenstypen.

Uitvoerwaarden definiëren

In het volgende voorbeeld ziet u hoe u een eigenschap van een geïmplementeerde resource kunt retourneren.

Voeg de outputs sectie toe aan de sjabloon. De uitvoerwaarde haalt de fully qualified domain name op voor een openbaar IP-adres.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
  },
}

Als u een eigenschap met een koppelteken in de naam wilt hebben, gebruikt u haakjes rond de naam in plaats van puntopening. Gebruik bijvoorbeeld in ['property-name'] plaats van .property-name .

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "user": {
      "user-name": "Test Person"
    }
  },
  "resources": [
  ],
  "outputs": {
    "nameResult": {
      "type": "string",
      "value": "[variables('user')['user-name']]"
    }
  }
}

Voorwaardelijke uitvoer

U kunt het condition element gebruiken om voorwaardelijk een waarde te retourneren. Normaal gesproken gebruikt u voorwaardelijke uitvoer wanneer u een resource voorwaardelijk hebt geïmplementeerd. In het volgende voorbeeld ziet u hoe u de resource-id voor een openbaar IP-adres voorwaardelijk kunt retourneren op basis van het al dan niet geïmplementeerde nieuwe IP-adres:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Zie sjabloon voor voorwaardelijke uitvoer voor een eenvoudig voorbeeld van voorwaardelijke uitvoer.

Dynamisch aantal uitvoer

In sommige scenario's weet u niet het aantal exemplaren van een waarde die u moet retourneren bij het maken van de sjabloon. U kunt een variabel aantal waarden retourneren met behulp van iteratieve uitvoer. Voeg het copy element toe om een uitvoer te itereren.

"outputs": {
  "storageEndpoints": {
    "type": "array",
    "copy": {
      "count": "[parameters('storageCount')]",
      "input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
    }
  }
}

Zie Uitvoer-iteratie in ARM-sjablonen voor meer informatie.

Gekoppelde sjablonen

U kunt gerelateerde sjablonen implementeren met behulp van gekoppelde sjablonen. Als u de uitvoerwaarde van een gekoppelde sjabloon wilt ophalen, gebruikt u de referentiefunctie in de bovenliggende sjabloon. De syntaxis in de bovenliggende sjabloon is:

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

In het volgende voorbeeld ziet u hoe u het IP-adres in een load balancer door een waarde op te vragen uit een gekoppelde sjabloon.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

Als de naam van de eigenschap een afbreekstreeping heeft, gebruikt u haakjes rond de naam in plaats van punt-notatie.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs['resource-ID'].value]"
}

U kunt de functie niet gebruiken reference in de sectie outputs van een geneste sjabloon. Als u de waarden voor een geïmplementeerde resource in een geneste sjabloon wilt retourneren, converteert u uw geneste sjabloon naar een gekoppelde sjabloon.

Met de sjabloon Openbaar IP-adres maakt u een openbaar IP-adres en wordt de resource-id uitgevoerd. De load balancer-sjabloon is een koppeling naar de voorgaande sjabloon. Hierbij wordt de resource-id in de uitvoer gebruikt bij het maken van load balancer.

Voorbeeldsjabloon

Met de volgende sjabloon worden geen resources geïmplementeerd. U ziet een aantal manieren om uitvoer van verschillende typen te retourneren.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[deployment().name]"
    },
    "integerOutput": {
      "type": "int",
      "value": "[length(environment().authentication.audiences)]"
    },
    "booleanOutput": {
      "type": "bool",
      "value": "[contains(deployment().name, 'demo')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[environment().authentication.audiences]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

Uitvoerwaarden op halen

Wanneer de implementatie is geslaagd, worden de uitvoerwaarden automatisch geretourneerd in de resultaten van de implementatie.

U kunt script gebruiken om uitvoerwaarden op te halen uit de implementatiegeschiedenis.

(Get-AzResourceGroupDeployment `
  -ResourceGroupName <resource-group-name> `
  -Name <deployment-name>).Outputs.resourceID.value

Volgende stappen