Freigeben über


Ausgaben in ARM-Vorlagen

In diesem Artikel wird beschrieben, wie Ausgabewerte in Ihrer Azure Resource Manager-Vorlage (ARM-Vorlage) definiert werden. Sie verwenden Ausgaben, wenn Werte von den bereitgestellten Ressourcen zurückgegeben werden müssen.

Das Format der einzelnen Ausgabewerte muss in einen der Datentypen aufgelöst werden.

Tipp

Bicep wird empfohlen, da sie dieselben Funktionen wie ARM-Vorlagen bietet und die Syntax einfacher zu verwenden ist. Weitere Informationen finden Sie in den Ergebnissen.

Sie sind auf 64 Ausgaben in einer Vorlage beschränkt. Weitere Informationen finden Sie unter Vorlagenbeschränkungen.

Definieren von Ausgabewerten

Im folgenden Beispiel wird gezeigt, wie Sie eine Eigenschaft von einer bereitgestellten Ressource zurückgeben lassen. Fügen Sie den Abschnitt Ausgaben zu der Vorlage hinzu. Der Ausgabewert erhält den Fully Qualified Domain Name für eine öffentliche IP-Adresse:

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

Wenn Sie eine Eigenschaft ausgeben müssen, die einen Bindestrich im Namen aufweist, setzen Sie den Namen in eckige Klammern, anstatt die Punktnotation zu verwenden. Verwenden Sie z. B. ['property-name'] statt .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']]"
    }
  }
}

Bedingte Ausgabe

Sie können das condition Element verwenden, um einen Wert bedingt zurückzugeben. In der Regel verwenden Sie eine bedingte Ausgabe, wenn Sie eine Ressource bedingt bereitgestellt haben. Das folgende Beispiel zeigt, wie Sie die Ressourcen-ID für eine öffentliche IP-Adresse bedingt zurückgeben können, je nachdem, ob eine neue IP-Adresse bereitgestellt wurde:

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

Ein einfaches Beispiel für die bedingte Ausgabe finden Sie in der Vorlage für bedingte Ausgabe.

Dynamische Anzahl von Ausgaben

In einigen Szenarien wissen Sie nicht, wie viele Instanzen eines Werts beim Erstellen der Vorlage zurückgegeben werden müssen. Sie können eine variable Anzahl von Werten zurückgeben, indem Sie die iterative Ausgabe verwenden. Fügen Sie das copy-Element hinzu, um eine Ausgabe zu iterieren:

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

Weitere Informationen finden Sie unter Ausgabe-Iteration in ARM-Vorlagen.

Verknüpfte Vorlagen

Sie können verwandte Vorlagen mithilfe verknüpfter Vorlagen bereitstellen. Um den Ausgabewert aus einer verlinkten Vorlage abzurufen, verwenden Sie die reference-Funktion in der übergeordneten Vorlage. Die Syntax in der übergeordneten Vorlage lautet:

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

Das folgende Beispiel zeigt, wie Sie die IP-Adresse auf einem Load-Balancer festlegen, indem Sie einen Wert aus einer verknüpften Vorlage abrufen:

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

Wenn der Eigenschaftenname einen Bindestrich aufweist, verwenden Sie eckige Klammern um den Namen anstelle der Punktnotation.

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

Sie können die reference-Funktion nicht im Abschnitt Ausgaben einer verschachtelten Vorlage verwenden. Um die Werte für eine bereitgestellte Ressource in einer geschachtelten Vorlage zurückzugeben, konvertieren Sie Ihre geschachtelte Vorlage in eine verknüpfte Vorlage.

Beispielvorlage

Die folgende Vorlage stellt keine Ressourcen bereit. Sie zeigt einige Möglichkeiten zur Rückgabe von Ausgaben verschiedener Typen:

{
  "$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()]"
    }
  }
}

Abrufen von Ausgabewerten

Bei erfolgreicher Bereitstellung werden die Ausgabewerte automatisch in den Ergebnissen der Bereitstellung zurückgegeben.

Um Ausgabewerte aus dem Bereitstellungsverlauf abzurufen, können Sie skript verwenden.

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

Objekte in Ausgaben sortieren

In JSON ist ein Objekt eine nicht geordnete Auflistung von null oder mehr Schlüssel-Wert-Paaren. Die Reihenfolge kann je nach Implementierung unterschiedlich sein. Beispielsweise sortiert die Bicep items() -Funktion die Objekte in der alphabetischen Reihenfolge. An anderen Stellen kann die ursprüngliche Reihenfolge beibehalten werden. Aufgrund dieser Unbestimmtheit sollten Sie beim Schreiben von Code, der mit den Parametern für die Bereitstellung von &-Ausgaben interagiert, keine Annahmen über die Reihenfolge der Objektschlüssel machen.

Nächste Schritte

Um mehr über die verfügbaren Eigenschaften für Ausgaben zu erfahren, lesen Sie Struktur und Syntax von ARM-Vorlagen.