Výstupy v šablonách ARM

Tento článek popisuje, jak definovat výstupní hodnoty v šabloně Azure Resource Manager (šablona ARM). Výstupy použijete, když potřebujete vrátit hodnoty z nasazených prostředků.

Formát každé výstupní hodnoty se musí přeložit na jeden z datových typů.

Definovat výstupní hodnoty

Následující příklad ukazuje, jak vrátit vlastnost z nasazeného prostředku.

Přidejte outputs oddíl do šablony. Výstupní hodnota získá plně kvalifikovaný název domény pro veřejnou IP adresu.

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

Pokud potřebujete výstup vlastnosti, která má v názvu pomlčku, místo zápisu tečky použijte hranaté závorky kolem názvu. Použijte například ['property-name'] místo .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']]"
    }
  }
}

Podmíněný výstup

Element lze použít condition k podmíněnému vrácení hodnoty. Obvykle používáte podmíněný výstup, když jste provedli podmíněně nasazení prostředku. Následující příklad ukazuje, jak podmíněně vracet ID prostředku pro veřejnou IP adresu na základě toho, zda byla nasazena nová:

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

Jednoduchý příklad podmíněného výstupu naleznete v tématu podmíněná výstupní šablona.

Dynamický počet výstupů

V některých scénářích neznáte počet instancí hodnoty, které potřebujete vrátit při vytváření šablony. Můžete vrátit proměnný počet hodnot pomocí iterativního výstupu. Přidejte copy element pro iteraci výstupu.

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

Další informace najdete v tématu výstupní iterace v šablonách ARM.

Propojené šablony

Související šablony můžete nasadit pomocí propojených šablon. K načtení výstupní hodnoty z propojené šablony použijte odkazovou funkci v nadřazené šabloně. Syntaxe v nadřazené šabloně je:

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

Následující příklad ukazuje, jak nastavit IP adresu v nástroji pro vyrovnávání zatížení načtením hodnoty z propojené šablony.

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

Pokud název vlastnosti obsahuje spojovník, místo notace tečky použijte hranaté závorky kolem názvu.

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

Funkci nelze použít reference v části výstupy vnořené šablony. Chcete-li vrátit hodnoty nasazeného prostředku ve vnořené šabloně, převeďte vnořenou šablonu na propojenou šablonu.

Šablona veřejné IP adresy vytvoří veřejnou IP adresu a vypíše ID prostředku. Šablona nástroje pro vyrovnávání zatížení odkazuje na předchozí šablonu. Při vytváření nástroje pro vyrovnávání zatížení používá ID prostředku ve výstupu.

Příklad šablony

Následující šablona neimplementuje žádné prostředky. Ukazuje několik způsobů vrácení výstupů různých typů.

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

Získat výstupní hodnoty

Po úspěšném nasazení se výstupní hodnoty automaticky vrátí do výsledků nasazení.

Chcete-li získat výstupní hodnoty z historie nasazení, můžete použít skript.

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

Další kroky