Dela via


Distributionsfunktioner för ARM-mallar

Resource Manager tillhandahåller följande funktioner för att hämta värden som är 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.

Dricks

Vi rekommenderar Bicep eftersom det erbjuder 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 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 klientorganisation).

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-mall deployment 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å URI:n för den överordnade mallen.

"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 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. Funktionen environment() känner inte till resurskonfigurationer. Den kan bara returnera ett enda standard-DNS-suffix för varje resurstyp.

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 Obligatoriskt Type Beskrivning
parameterName Ja 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 String alternativ 1
intOutput Int 1
objectOutput Objekt {"one": "a", "two": "b"}
arrayOutput Matris [1, 2, 3]
crossOutput String 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 Obligatoriskt Type Beskrivning
variableName Ja String 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 konstruera 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 String myVariable
exampleOutput2 Matris [1, 2, 3, 4]
exampleOutput3 String myVariable
exampleOutput4 Objekt {"property1": "value1", "property2": "value2"}

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

Nästa steg