Kimenetek ARM-sablonokban

Ez a cikk bemutatja, hogyan definiálhat kimeneti értékeket az Azure Resource Manager-sablonban (ARM-sablonban). A kimeneteket akkor használja, ha az üzembe helyezett erőforrások értékeit kell visszaadnia.

Az egyes kimeneti értékek formátumának az egyik adattípusra kell feloldódnia.

Tipp.

A Bicep használatát javasoljuk, mert ugyanazokkal a képességekkel rendelkezik, mint az ARM-sablonok, és a szintaxis használata egyszerűbb. További információkért tekintse meg a kimeneteket.

Egy sablonban legfeljebb 64 kimenetet használhat. További információ: Sablonkorlátok.

Kimeneti értékek definiálása

Az alábbi példa bemutatja, hogyan lehet visszaadni egy tulajdonságot egy üzembe helyezett erőforrásból.

Adja hozzá a outputs szakaszt a sablonhoz. A kimeneti érték lekéri egy nyilvános IP-cím teljes tartománynevét.

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

Ha olyan tulajdonságot kell kihoznia, amelynek kötőjele van a névben, használjon szögletes zárójeleket a név körül pontjelezés helyett. Például használja ahelyett, hogy ['property-name'].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']]"
    }
  }
}

Feltételes kimenet

Az elem használatával condition feltételesen visszaadhat egy értéket. Általában feltételes kimenetet használ, amikor feltételesen üzembe helyezett egy erőforrást. Az alábbi példa bemutatja, hogyan lehet feltételesen visszaadni egy nyilvános IP-cím erőforrás-azonosítóját attól függően, hogy egy újat telepítettek-e:

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

A feltételes kimenet egyszerű példáját a feltételes kimeneti sablonban talál.

Kimenetek dinamikus száma

Bizonyos esetekben nem tudja, hogy hány példányt kell visszaadnia a sablon létrehozásakor. Iteratív kimenettel változó számú értéket adhat vissza. Adja hozzá az copy elemet a kimenet iterálásához.

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

További információ: Kimeneti iteráció ARM-sablonokban.

Hivatkozott sablonok

Kapcsolódó sablonokat csatolt sablonok használatával helyezhet üzembe. A kimeneti érték csatolt sablonból való lekéréséhez használja a referenciafüggvényt a szülősablonban. A szülősablon szintaxisa a következő:

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

Az alábbi példa bemutatja, hogyan állíthatja be az IP-címet egy terheléselosztón egy csatolt sablonból származó érték beolvasásával.

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

Ha a tulajdonságnév kötőjellel rendelkezik, használjon szögletes zárójeleket a név körül pont jelölés helyett.

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

A függvény nem használható beágyazott reference sablon kimenetek szakaszában. Ha egy beágyazott sablonban üzembe helyezett erőforrás értékeit szeretné visszaadni, konvertálja a beágyazott sablont csatolt sablonná.

A nyilvános IP-címsablon létrehoz egy nyilvános IP-címet, és az erőforrás-azonosítót adja ki. A Load Balancer-sablon az előző sablonra hivatkozik. A terheléselosztó létrehozásakor a kimenet erőforrás-azonosítóját használja.

Példasablon

Az alábbi sablon nem helyez üzembe erőforrásokat. A különböző típusú kimenetek visszaadásának néhány módját mutatja be.

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

Kimeneti értékek lekérése

Ha az üzembe helyezés sikeres, a rendszer automatikusan visszaadja a kimeneti értékeket az üzembe helyezés eredményeiben.

Az üzembe helyezési előzmények kimeneti értékeinek lekéréséhez használhat szkriptet.

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

Objektumrendezés kimenetekben

A JSON-ban az objektum nulla vagy több kulcs/érték pár rendezetlen gyűjteménye. A rendezés a megvalósítástól függően eltérő lehet. A Bicep items() függvény például betűrendbe rendezi az objektumokat. Más helyeken az eredeti sorrend megőrizhető. Emiatt a nem determinizmus miatt ne feltételezze az objektumkulcsok sorrendjét a kód írásakor, amely az üzembehelyezési paraméterekkel és kimenetekkel kommunikál.

További lépések