Udostępnij za pośrednictwem


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