Implementatiefuncties voor ARM-sjablonen

Resource Manager biedt de volgende functies voor het ophalen van waarden die betrekking hebben op de huidige implementatie van uw ARM-sjabloon (Azure Resource Manager):

Als u waarden wilt ophalen uit resources, resourcegroepen of abonnementen, raadpleegt u Resourcefuncties.

Tip

We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis eenvoudiger te gebruiken is. Zie implementatiefuncties voor meer informatie.

implementatie

deployment()

Retourneert informatie over de huidige implementatiebewerking.

Gebruik in Bicep de implementatiefunctie .

Retourwaarde

Deze functie retourneert het object dat wordt doorgegeven tijdens de implementatie. De eigenschappen in het geretourneerde object verschillen afhankelijk van of u:

  • een sjabloon of sjabloonspecificatie implementeren.
  • het implementeren van een sjabloon die een lokaal bestand is of het implementeren van een sjabloon die een extern bestand is dat toegankelijk is via een URI.
  • implementeren in een resourcegroep of implementeren in een van de andere bereiken (Azure-abonnement, beheergroep of tenant).

Bij het implementeren van een lokale sjabloon in een resourcegroep retourneert de functie de volgende indeling:

{
  "name": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Wanneer u een externe sjabloon implementeert in een resourcegroep, retourneert de functie de volgende indeling:

{
  "name": "",
  "properties": {
    "templateLink": {
      "uri": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Bij het implementeren van een sjabloonspecificatie in een resourcegroep: de functie retourneert de volgende indeling:

{
  "name": "",
  "properties": {
    "templateLink": {
      "id": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Wanneer u implementeert in een Azure-abonnement, beheergroep of tenant, bevat het retourobject een location eigenschap. De locatie-eigenschap wordt opgenomen bij het implementeren van een lokale sjabloon of een externe sjabloon. De indeling is:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

Bij het implementeren van een languageVersion 2.0-sjabloon retourneert de deployment functie een beperkte subset van eigenschappen:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "contentVersion": ""
    },
    "templateLink": {
      "id": "",
      "uri": ""
    }
  }
}

Opmerkingen

U kunt gebruiken om een koppeling naar een andere sjabloon te maken deployment() op basis van de URI van de bovenliggende sjabloon.

"variables": {
  "sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"
}

Als u een sjabloon opnieuw implementeert vanuit de implementatiegeschiedenis in de portal, wordt de sjabloon geïmplementeerd als een lokaal bestand. De templateLink eigenschap wordt niet geretourneerd in de implementatiefunctie. Als uw sjabloon afhankelijk is van templateLink om een koppeling naar een andere sjabloon te maken, moet u de portal niet opnieuw implementeren. Gebruik in plaats daarvan de opdrachten die u hebt gebruikt om de sjabloon oorspronkelijk te implementeren.

Voorbeeld

In het volgende voorbeeld wordt een implementatieobject geretourneerd.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "deploymentOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

In het voorgaande voorbeeld wordt het volgende object geretourneerd:

{
  "name": "deployment",
  "properties": {
    "template": {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [],
      "outputs": {
        "deploymentOutput": {
          "type": "Object",
          "value": "[deployment()]"
        }
      }
    },
    "templateHash": "13135986259522608210",
    "parameters": {},
    "mode": "Incremental",
    "provisioningState": "Accepted"
  }
}

Voor een abonnementsimplementatie retourneert het volgende voorbeeld een implementatieobject.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [],
  "outputs": {
    "exampleOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

omgeving

environment()

Retourneert informatie over de Azure-omgeving die wordt gebruikt voor implementatie.

Gebruik in Bicep de omgevingsfunctie .

Opmerkingen

Als u een lijst met geregistreerde omgevingen voor uw account wilt zien, gebruikt u az cloud list of Get-AzEnvironment.

Retourwaarde

Deze functie retourneert eigenschappen voor de huidige Azure-omgeving. In het volgende voorbeeld ziet u de eigenschappen voor globale Azure. Onafhankelijke clouds kunnen iets andere eigenschappen retourneren.

{
  "name": "",
  "gallery": "",
  "graph": "",
  "portal": "",
  "graphAudience": "",
  "activeDirectoryDataLake": "",
  "batch": "",
  "media": "",
  "sqlManagement": "",
  "vmImageAliasDoc": "",
  "resourceManager": "",
  "authentication": {
    "loginEndpoint": "",
    "audiences": [
      "",
      ""
    ],
    "tenant": "",
    "identityProvider": ""
  },
  "suffixes": {
    "acrLoginServer": "",
    "azureDatalakeAnalyticsCatalogAndJob": "",
    "azureDatalakeStoreFileSystem": "",
    "azureFrontDoorEndpointSuffix": "",
    "keyvaultDns": "",
    "sqlServerHostname": "",
    "storage": ""
  }
}

Voorbeeld

De volgende voorbeeldsjabloon retourneert het omgevingsobject.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "environmentOutput": {
      "type": "object",
      "value": "[environment()]"
    }
  }
}

In het voorgaande voorbeeld wordt het volgende object geretourneerd wanneer het wordt geïmplementeerd in globale Azure:

{
  "name": "AzureCloud",
  "gallery": "https://gallery.azure.com/",
  "graph": "https://graph.windows.net/",
  "portal": "https://portal.azure.com",
  "graphAudience": "https://graph.windows.net/",
  "activeDirectoryDataLake": "https://datalake.azure.net/",
  "batch": "https://batch.core.windows.net/",
  "media": "https://rest.media.azure.net",
  "sqlManagement": "https://management.core.windows.net:8443/",
  "vmImageAliasDoc": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json",
  "resourceManager": "https://management.azure.com/",
  "authentication": {
    "loginEndpoint": "https://login.microsoftonline.com/",
    "audiences": [
      "https://management.core.windows.net/",
      "https://management.azure.com/"
    ],
    "tenant": "common",
    "identityProvider": "AAD"
  },
  "suffixes": {
    "acrLoginServer": ".azurecr.io",
    "azureDatalakeAnalyticsCatalogAndJob": "azuredatalakeanalytics.net",
    "azureDatalakeStoreFileSystem": "azuredatalakestore.net",
    "azureFrontDoorEndpointSuffix": "azurefd.net",
    "keyvaultDns": ".vault.azure.net",
    "sqlServerHostname": ".database.windows.net",
    "storage": "core.windows.net"
  }
}

parameters

parameters(parameterName)

Retourneert een parameterwaarde. De opgegeven parameternaam moet worden gedefinieerd in de sectie parameters van de sjabloon.

In Bicep verwijst u rechtstreeks naar parameters met behulp van hun symbolische namen.

Parameters

Parameter Vereist Type Description
parameterName Yes tekenreeks De naam van de parameter die moet worden geretourneerd.

Retourwaarde

De waarde van de opgegeven parameter.

Opmerkingen

Normaal gesproken gebruikt u parameters om resourcewaarden in te stellen. In het volgende voorbeeld wordt de naam van de website ingesteld op de parameterwaarde die tijdens de implementatie is doorgegeven.

"parameters": {
  "siteName": {
    "type": "string"
  }
}, "resources": [
  {
    "type": "Microsoft.Web/Sites",
    "apiVersion": "2016-08-01",
    "name": "[parameters('siteName')]",
    ...
  }
]

Voorbeeld

In het volgende voorbeeld ziet u een vereenvoudigd gebruik van de functie parameters.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringParameter": {
      "type": "string",
      "defaultValue": "option 1"
    },
    "intParameter": {
      "type": "int",
      "defaultValue": 1
    },
    "objectParameter": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b"
      }
    },
    "arrayParameter": {
      "type": "array",
      "defaultValue": [ 1, 2, 3 ]
    },
    "crossParameter": {
      "type": "string",
      "defaultValue": "[parameters('stringParameter')]"
    }
  },
  "variables": {},
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[parameters('stringParameter')]"
    },
    "intOutput": {
      "type": "int",
      "value": "[parameters('intParameter')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[parameters('objectParameter')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[parameters('arrayParameter')]"
    },
    "crossOutput": {
      "type": "string",
      "value": "[parameters('crossParameter')]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Naam Type Waarde
stringOutput Tekenreeks optie 1
intOutput Int 1
objectOutput Object {"one": "a", "two": "b"}
arrayOutput Matrix [1, 2, 3]
crossOutput Tekenreeks optie 1

Zie Parameters in ARM-sjablonen voor meer informatie over het gebruik van parameters.

Variabelen

variables(variableName)

Retourneert de waarde van de variabele. De opgegeven naam van de variabele moet worden gedefinieerd in de sectie variabelen van de sjabloon.

In Bicep verwijst u rechtstreeks naar variabelen met behulp van hun symbolische namen.

Parameters

Parameter Vereist Type Description
variableName Ja Tekenreeks De naam van de variabele die moet worden geretourneerd.

Retourwaarde

De waarde van de opgegeven variabele.

Opmerkingen

Normaal gesproken gebruikt u variabelen om uw sjabloon te vereenvoudigen door complexe waarden slechts eenmaal samen te stellen. In het volgende voorbeeld wordt een unieke naam voor een opslagaccount gemaakt.

"variables": {
  "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  },
  {
    "type": "Microsoft.Compute/virtualMachines",
    "dependsOn": [
      "[variables('storageName')]"
    ],
    ...
  }
],

Voorbeeld

In het volgende voorbeeld worden verschillende variabelewaarden geretourneerd.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "var1": "myVariable",
    "var2": [ 1, 2, 3, 4 ],
    "var3": "[ variables('var1') ]",
    "var4": {
      "property1": "value1",
      "property2": "value2"
    }
  },
  "resources": [],
  "outputs": {
    "exampleOutput1": {
      "type": "string",
      "value": "[variables('var1')]"
    },
    "exampleOutput2": {
      "type": "array",
      "value": "[variables('var2')]"
    },
    "exampleOutput3": {
      "type": "string",
      "value": "[variables('var3')]"
    },
    "exampleOutput4": {
      "type": "object",
      "value": "[variables('var4')]"
    }
  }
}

De uitvoer van het voorgaande voorbeeld met de standaardwaarden is:

Naam Type Waarde
exampleOutput1 Tekenreeks myVariable
exampleOutput2 Matrix [1, 2, 3, 4]
exampleOutput3 Tekenreeks myVariable
exampleOutput4 Object {"property1": "value1", "property2": "value2"}

Zie Variabelen in ARM-sjabloon voor meer informatie over het gebruik van variabelen.

Volgende stappen