Funkcje wdrażania szablonów usługi ARM

Resource Manager udostępnia następujące funkcje służące do uzyskiwania wartości związanych z bieżącym wdrożeniem Azure Resource Manager szablonu usługi Arm:

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

wdrożenie

deployment()

Zwraca informacje o bieżącej operacji 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żanie szablonu, który jest plikiem zdalnym dostępnym za pośrednictwem URI.
  • wdrażanie w grupie zasobów lub wdrażanie w jednym z innych zakresów (subskrypcja platformyAzure, grupa zarządzanialub 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 zwracany obiekt zawiera location właściwość . Właściwość location jest uwzględniana podczas wdrażania szablonu lokalnego lub zewnętrznego. Format jest:

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

Uwagi

Możesz użyć elementu , aby połączyć się z innym szablonem na deployment() podstawie jego URI.

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

W przypadku ponownego wdrożenia szablonu z historii wdrożenia 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 konstruowania linku do innego szablonu, nie używaj portalu do templateLink ponownego lodowania. 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.

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

Poprzedni przykład zwraca następujący obiekt po wdrożeniu 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.windows.net/",
    "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 aplikacji Bicep można bezpośrednio odwoływać 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 parametry są używane do ustawienia 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 pokazano 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 aplikacji Bicep można bezpośrednio odwoływać 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

Zwykle zmienne upraszczają szablon, konstruują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