Funkce nasazení pro šablony ARM

Resource Manager poskytuje následující funkce pro získání hodnot souvisejících s aktuálním nasazením šablony Azure Resource Manageru (šablona ARM):

Pokud chcete získat hodnoty z prostředků, skupin prostředků nebo předplatných, podívejte se na funkce prostředků.

Tip

Doporučujeme Bicep, protože nabízí stejné možnosti jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v tématu Funkce nasazení .

nasazení

deployment()

Vrátí informace o aktuální operaci nasazení.

V Bicep použijte funkci nasazení .

Vrácená hodnota

Tato funkce vrátí objekt, který se předává během nasazení. Vlastnosti vráceného objektu se liší podle toho, jestli jste:

  • nasazení šablony nebo specifikace šablony
  • nasazení šablony, která je místním souborem nebo nasazením šablony, která je vzdáleným souborem přístupným prostřednictvím identifikátoru URI.
  • nasazení do skupiny prostředků nebo nasazení do jednoho z dalších oborů (předplatné Azure, skupina pro správu nebo tenant).

Při nasazování místní šablony do skupiny prostředků vrátí funkce následující formát:

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

Při nasazování vzdálené šablony do skupiny prostředků vrátí funkce následující formát:

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

Při nasazování specifikace šablony do skupiny prostředků vrátí funkce následující formát:

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

Když nasadíte do předplatného Azure, skupiny pro správu nebo tenanta, návratový objekt obsahuje location vlastnost. Vlastnost umístění je součástí nasazení místní šablony nebo externí šablony. Formát je následující:

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

Při nasazování šablony deployment languageVersion 2.0 vrátí funkce omezenou podmnožinu vlastností:

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

Poznámky

Můžete použít deployment() propojení s jinou šablonou na základě identifikátoru URI nadřazené šablony.

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

Pokud znovu nasadíte šablonu z historie nasazení na portálu, šablona se nasadí jako místní soubor. Vlastnost templateLink není vrácena ve funkci nasazení. Pokud se vaše šablona spoléhá na templateLink vytvoření odkazu na jinou šablonu, nepoužívejte portál k opětovnému nasazení. Místo toho použijte příkazy, které jste použili k původnímu nasazení šablony.

Příklad

Následující příklad vrátí objekt nasazení.

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

Předchozí příklad vrátí následující 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"
  }
}

V případě nasazení předplatného vrátí následující příklad objekt nasazení.

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

prostředí

environment()

Vrátí informace o prostředí Azure použitém k nasazení. Funkce environment() nezná konfigurace prostředků. Může vrátit pouze jednu výchozí příponu DNS pro každý typ prostředku.

V Bicep použijte funkci prostředí .

Poznámky

Pokud chcete zobrazit seznam registrovaných prostředí pro váš účet, použijte příkaz az cloud list nebo Get-AzEnvironment.

Vrácená hodnota

Tato funkce vrací vlastnosti pro aktuální prostředí Azure. Následující příklad ukazuje vlastnosti globálního Azure. Suverénní cloudy můžou vracet mírně odlišné vlastnosti.

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

Příklad

Následující příklad šablony vrátí objekt prostředí.

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

Předchozí příklad vrátí následující objekt při nasazení do globálního 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"
  }
}

parametry

parameters(parameterName)

Vrátí hodnotu parametru. Zadaný název parametru musí být definován v části parametrů šablony.

V Bicep přímo odkazují na parametry pomocí jejich symbolických názvů.

Parametry

Parametr Požaduje se Type Popis
parameterName Ano string Název parametru, který se má vrátit.

Vrácená hodnota

Hodnota zadaného parametru.

Poznámky

K nastavení hodnot prostředků se obvykle používají parametry. Následující příklad nastaví název webu na hodnotu parametru předanou během nasazení.

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

Příklad

Následující příklad ukazuje zjednodušené použití funkce parametrů.

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
stringOutput String možnost 1
intOutput Int 0
objectOutput Object {"one": "a", "two": "b"}
arrayOutput Pole [1, 2, 3]
crossOutput String možnost 1

Další informace o použití parametrů naleznete v tématu Parametry v šablonách ARM.

proměnné

variables(variableName)

Vrátí hodnotu proměnné. Zadaný název proměnné musí být definován v oddílu proměnných šablony.

V Bicep přímo odkazují na proměnné pomocí jejich symbolických názvů.

Parametry

Parametr Požaduje se Type Popis
variableName Ano String Název proměnné, která se má vrátit.

Vrácená hodnota

Hodnota zadané proměnné.

Poznámky

K zjednodušení šablony obvykle používáte proměnné tak, že vytváříte složité hodnoty pouze jednou. Následující příklad vytvoří jedinečný název pro účet úložiště.

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

Příklad

Následující příklad vrátí různé hodnoty proměnných.

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
exampleOutput1 String myVariable
exampleOutput2 Pole [1, 2, 3, 4]
exampleOutput3 String myVariable
exampleOutput4 Object {"property1": "value1", "property2": "value2"}

Další informace o používání proměnných najdete v tématu Proměnné v šabloně ARM.

Další kroky