Funkcje wdrażania dla szablonów usługi ARM
Usługa 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.
Napiwek
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 plikiem lokalnym 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 subskrypcji platformy Azure, grupie zarządzania lub dzierżawie 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 deployment
languageVersion 2.0 funkcja zwraca ograniczony podzestaw właściwości:
{
"name": "",
"location": "",
"properties": {
"template": {
"contentVersion": ""
},
"templateLink": {
"id": "",
"uri": ""
}
}
}
Uwagi
Możesz użyć deployment()
polecenia , 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 opiera się na templateLink
konstruowaniu 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 usługi
environment()
Zwraca informacje o środowisku platformy Azure używanym do wdrożenia. Funkcja environment()
nie zna konfiguracji zasobów. Może zwracać tylko jeden domyślny sufiks DNS dla każdego typu zasobu.
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 parameters szablonu.
W Bicep bezpośrednio odwołują się do parametrów przy użyciu ich nazw symbolicznych.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
nazwa parametru | Tak | string | Nazwa parametru do zwrócenia. |
Wartość zwracana
Wartość określonego parametru.
Uwagi
Zazwyczaj parametry służą do ustawiania wartości zasobów. W poniższym przykładzie nazwa witryny internetowej jest ustawiana 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:
Nazwisko | Typ | Wartość |
---|---|---|
stringOutput | String | opcja 1 |
intOutput | Int | 1 |
objectOutput | Objekt | {"one": "a", "two": "b"} |
arrayOutput | Tablica | [1, 2, 3] |
crossOutput | String | opcja 1 |
Aby uzyskać więcej informacji na temat używania parametrów, zobacz Parametry w szablonach usługi ARM.
zmienne
variables(variableName)
Zwraca wartość zmiennej. Określona nazwa zmiennej musi być zdefiniowana w sekcji zmiennych szablonu.
W Bicep bezpośrednio odwołują się do zmiennych przy użyciu ich nazw symbolicznych.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
nazwa_zmiennej | Tak | String | 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:
Nazwisko | Typ | Wartość |
---|---|---|
exampleOutput1 | String | myVariable |
exampleOutput2 | Tablica | [1, 2, 3, 4] |
exampleOutput3 | String | myVariable |
exampleOutput4 | Objekt | {"property1": "value1", "property2": "value2"} |
Aby uzyskać więcej informacji na temat używania zmiennych, zobacz Zmienne w szablonie usługi ARM.
Następne kroki
- Aby zapoznać się z opisem sekcji w szablonie usługi ARM, zobacz Omówienie struktury i składni szablonów usługi ARM.