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
- Zie Inzicht in de structuur en syntaxis van ARM-sjablonen voor meer informatie over de beschikbare eigenschappen voor uitvoer.