Distributionsfunktioner för ARM-mallar

Resource Manager innehåller följande funktioner för att hämta värden relaterade till den aktuella distributionen av din Azure Resource Manager-mall (ARM-mall):

Information om hur du hämtar värden från resurser, resursgrupper eller prenumerationer finns i Resursfunktioner.

Tips

Vi rekommenderar Bicep eftersom det har samma funktioner som ARM-mallar och syntaxen är enklare att använda. Mer information finns i distributionsfunktioner .

distribution

deployment()

Returnerar information om den aktuella distributionsåtgärden.

I Bicep använder du distributionsfunktionen .

Returvärde

Den här funktionen returnerar objektet som skickas under distributionen. Egenskaperna i det returnerade objektet skiljer sig åt beroende på om du är:

  • distribuera en mall eller en mallspecifikation.
  • distribuera en mall som är en lokal fil eller distribuera en mall som är en fjärrfil som nås via en URI.
  • distribuera till en resursgrupp eller distribuera till något av de andra omfången (Azure-prenumeration, hanteringsgrupp eller klient).

När du distribuerar en lokal mall till en resursgrupp: funktionen returnerar följande format:

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

När du distribuerar en fjärrmall till en resursgrupp: funktionen returnerar följande format:

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

När du distribuerar en mallspecifikation till en resursgrupp: funktionen returnerar följande format:

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

När du distribuerar till en Azure-prenumeration, hanteringsgrupp eller klientorganisation innehåller returobjektet en location egenskap. Platsegenskapen ingår när du distribuerar antingen en lokal mall eller en extern mall. Formatet är:

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

När du distribuerar en languageVersion 2.0-malldeployment returnerar funktionen en begränsad delmängd av egenskaper:

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

Kommentarer

Du kan använda deployment() för att länka till en annan mall baserat på den överordnade mallens URI.

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

Om du distribuerar om en mall från distributionshistoriken i portalen distribueras mallen som en lokal fil. Egenskapen templateLink returneras inte i distributionsfunktionen. Om mallen förlitar sig på templateLink för att skapa en länk till en annan mall ska du inte använda portalen för att distribuera om. Använd i stället de kommandon som du använde för att ursprungligen distribuera mallen.

Exempel

I följande exempel returneras ett distributionsobjekt.

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

Föregående exempel returnerar följande objekt:

{
  "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"
  }
}

För en prenumerationsdistribution returnerar följande exempel ett distributionsobjekt.

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

miljö

environment()

Returnerar information om Azure-miljön som används för distribution.

Använd miljöfunktionen i Bicep.

Kommentarer

Om du vill se en lista över registrerade miljöer för ditt konto använder du az cloud list eller Get-AzEnvironment.

Returvärde

Den här funktionen returnerar egenskaper för den aktuella Azure-miljön. I följande exempel visas egenskaperna för globala Azure. Nationella moln kan returnera något olika egenskaper.

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

Exempel

Följande exempelmall returnerar miljöobjektet.

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

Föregående exempel returnerar följande objekt när det distribueras till global 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"
  }
}

parametrar

parameters(parameterName)

Returnerar ett parametervärde. Det angivna parameternamnet måste definieras i parameteravsnittet i mallen.

I Bicep refererar du direkt till parametrar med hjälp av deras symboliska namn.

Parametrar

Parameter Krävs Typ Description
parameterName Yes sträng Namnet på parametern som ska returneras.

Returvärde

Värdet för den angivna parametern.

Kommentarer

Vanligtvis använder du parametrar för att ange resursvärden. I följande exempel anges namnet på webbplatsen till parametervärdet som skickades under distributionen.

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

Exempel

I följande exempel visas en förenklad användning av parameterfunktionen.

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
stringOutput Sträng alternativ 1
intOutput Int 1
objectOutput Objekt {"one": "a", "two": "b"}
arrayOutput Matris [1, 2, 3]
crossOutput Sträng alternativ 1

Mer information om hur du använder parametrar finns i Parametrar i ARM-mallar.

Variabler

variables(variableName)

Returnerar värdet för variabeln. Det angivna variabelnamnet måste definieras i avsnittet variabler i mallen.

I Bicep refererar du direkt till variabler med hjälp av deras symboliska namn.

Parametrar

Parameter Krävs Typ Description
variableName Ja Sträng Namnet på variabeln som ska returneras.

Returvärde

Värdet för den angivna variabeln.

Kommentarer

Vanligtvis använder du variabler för att förenkla mallen genom att bara skapa komplexa värden en gång. I följande exempel skapas ett unikt namn för ett lagringskonto.

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

Exempel

I följande exempel returneras olika variabelvärden.

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

Utdata från föregående exempel med standardvärdena är:

Namn Typ Värde
exampleOutput1 Sträng myVariable
exampleOutput2 Matris [1, 2, 3, 4]
exampleOutput3 Sträng myVariable
exampleOutput4 Objekt {"property1": "value1", "property2": "value2"}

Mer information om hur du använder variabler finns i Variabler i ARM-mall.

Nästa steg