Funkcje wdrażania dla szablonów usługi ARM

Resource Manager udostępnia następujące funkcje umożliwiające uzyskiwanie wartości związanych z bieżącym wdrożeniem szablonu usługi Azure Resource Manager (szablon usługi ARM):

Aby uzyskać wartości z zasobów, grup zasobów lub subskrypcji, zobacz Funkcje zasobów.

Porada

Zalecamy Bicep , ponieważ oferuje te same możliwości co szablony usługi ARM, a składnia jest łatwiejsza w użyciu. Aby dowiedzieć się więcej, zobacz funkcje wdrażania .

wdrożenie

deployment()

Zwraca informacje o bieżącej operacji wdrażania.

W aplikacji Bicep użyj funkcji wdrażania .

Wartość zwracana

Ta funkcja zwraca obiekt przekazywany podczas wdrażania. Właściwości zwróconego obiektu różnią się w zależności od tego, czy:

  • wdrażanie szablonu lub specyfikacji szablonu.
  • wdrażanie szablonu, który jest lokalnym plikiem lub wdrażaniem szablonu, który jest plikiem zdalnym dostępnym za pośrednictwem identyfikatora URI.
  • wdrażanie w grupie zasobów lub wdrażanie w jednym z innych zakresów (subskrypcja platformy Azure, grupa zarządzania lub dzierżawa).

Podczas wdrażania szablonu lokalnego w grupie zasobów: funkcja zwraca następujący format:

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

Podczas wdrażania szablonu zdalnego w grupie zasobów: funkcja zwraca następujący format:

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

Podczas wdrażania specyfikacji szablonu w grupie zasobów: funkcja zwraca następujący format:

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

Podczas wdrażania w ramach subskrypcji platformy Azure, grupy zarządzania lub dzierżawy obiekt zwracany location zawiera właściwość. Właściwość lokalizacji jest uwzględniana podczas wdrażania szablonu lokalnego lub szablonu zewnętrznego. Format to:

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

Podczas wdrażania szablonu deploymentlanguageVersion 2.0 funkcja zwraca ograniczony podzbiór właściwości:

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

Uwagi

Możesz użyć polecenia deployment() , aby połączyć się z innym szablonem na podstawie identyfikatora URI szablonu nadrzędnego.

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

Jeśli ponownie wdrożysz szablon z historii wdrażania w portalu, szablon zostanie wdrożony jako plik lokalny. Właściwość templateLink nie jest zwracana w funkcji wdrażania. Jeśli szablon korzysta z templateLink tworzenia linku do innego szablonu, nie używaj portalu do ponownego wdrażania. Zamiast tego użyj poleceń użytych do pierwotnie wdrożenia szablonu.

Przykład

Poniższy przykład zwraca obiekt wdrożenia.

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

Powyższy przykład zwraca następujący obiekt:

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

W przypadku wdrożenia subskrypcji poniższy przykład zwraca obiekt wdrożenia.

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

środowisko

environment()

Zwraca informacje o środowisku platformy Azure używanym do wdrożenia.

W aplikacji Bicep użyj funkcji środowiska .

Uwagi

Aby wyświetlić listę zarejestrowanych środowisk dla konta, użyj polecenia az cloud list lub Get-AzEnvironment.

Wartość zwracana

Ta funkcja zwraca właściwości dla bieżącego środowiska platformy Azure. W poniższym przykładzie przedstawiono właściwości globalnej platformy Azure. Suwerenne chmury mogą zwracać nieco inne właściwości.

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

Przykład

Poniższy przykładowy szablon zwraca obiekt środowiska.

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

Powyższy przykład zwraca następujący obiekt podczas wdrażania na globalnej platformie 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)

Zwraca wartość parametru. Określona nazwa parametru musi być zdefiniowana w sekcji parametrów szablonu.

W pliku Bicep bezpośrednio odwołuje się do parametrów przy użyciu ich nazw symbolicznych.

Parametry

Parametr Wymagane Typ Opis
Parametername Tak ciąg Nazwa parametru do zwrócenia.

Wartość zwracana

Wartość określonego parametru.

Uwagi

Zazwyczaj do ustawiania wartości zasobów są używane parametry. Poniższy przykład ustawia nazwę witryny sieci Web na wartość parametru przekazaną podczas wdrażania.

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

Przykład

W poniższym przykładzie przedstawiono uproszczone użycie funkcji 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')]"
    }
  }
}

Dane wyjściowe z poprzedniego przykładu z wartościami domyślnymi to:

Nazwa Typ Wartość
stringOutput Ciąg opcja 1
intOutput int 1
objectOutput Obiekt {"one": "a", "two": "b"}
arrayOutput Tablica [1, 2, 3]
crossOutput Ciąg opcja 1

Aby uzyskać więcej informacji na temat używania parametrów, zobacz Parametry w szablonach usługi ARM.

Zmiennych

variables(variableName)

Zwraca wartość zmiennej. Określona nazwa zmiennej musi być zdefiniowana w sekcji zmiennych szablonu.

W pliku Bicep bezpośrednio odwołują się do zmiennych przy użyciu ich nazw symbolicznych.

Parametry

Parametr Wymagane Typ Opis
Variablename Tak Ciąg Nazwa zmiennej do zwrócenia.

Wartość zwracana

Wartość określonej zmiennej.

Uwagi

Zazwyczaj używasz zmiennych, aby uprościć szablon, tworząc złożone wartości tylko raz. Poniższy przykład tworzy unikatową nazwę konta magazynu.

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

Przykład

Poniższy przykład zwraca różne wartości zmiennych.

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

Dane wyjściowe z poprzedniego przykładu z wartościami domyślnymi to:

Nazwa Typ Wartość
exampleOutput1 Ciąg myVariable
exampleOutput2 Tablica [1, 2, 3, 4]
exampleOutput3 Ciąg myVariable
exampleOutput4 Obiekt {"property1": "value1", "property2": "value2"}

Aby uzyskać więcej informacji na temat używania zmiennych, zobacz Zmienne w szablonie usługi ARM.

Następne kroki