Поделиться через


Функции развертывания для шаблонов ARM

Azure Resource Manager предоставляет следующие функции для получения значений, связанных с текущим развертыванием шаблона Azure Resource Manager (шаблон ARM):

Сведения о получении значений из ресурсов, групп ресурсов или подписок см. в разделе "Функции ресурсов".

Tip

Bicep рекомендуется, так как он предлагает те же возможности, что и шаблоны ARM, и синтаксис проще использовать. Дополнительные сведения см. в разделе deployment "Функции".

deployer

deployer()

Возвращает сведения о текущем субъекте развертывания.

В Bicep используйте функцию deployer .

Возвращаемое значение

Эта функция возвращает сведения о текущем субъекте развертывания, включая идентификатор клиента, идентификатор объекта и имя участника-пользователя:

{
  "objectId": "",
  "tenantId": "",
  "userPrincipalName": ""
}

Example

В следующем примере возвращается объект deployer:

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

В предыдущем примере возвращается следующий объект:

{
  "objectId":"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
  "tenantId":"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
  "userPrincipalName":"[email protected]"
}

deployment

deployment()

Возвращает сведения о текущей операции развертывания.

В Bicep используйте функцию deployment .

Возвращаемое значение

Эта функция возвращает объект, переданный во время развертывания. Свойства в возвращаемом объекте отличаются в зависимости от того, есть ли вы:

  • Развертывание шаблона или спецификации шаблона.
  • Развертывание шаблона, который является локальным файлом или развертыванием шаблона, к которому обращается удаленный файл с помощью URI.
  • Развертывание в группе ресурсов или развертывание в одной из других областей (подписка Azure, группы управления или клиенты).

При развертывании локального шаблона в группе ресурсов функция возвращает следующий формат:

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

Если шаблон удален, templateLink свойство включается в возвращаемый объект. Свойство templateLink содержит универсальный код ресурса (URI) шаблона. Формат будет следующим:

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

Дополнительные сведения см. в разделе "Использование переменных для связывания шаблонов".

При развертывании спецификации шаблона в группе ресурсов функция возвращает следующий формат:

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

Если вы выполняете развертывание в подписке Azure, группе управления или клиенте, возвращаемый объект содержит свойство location, а не группу ресурсов. Свойство расположения включается при развертывании локального или внешнего шаблона. Формат будет следующим:

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

При развертывании шаблона deploymentlanguageVersion 2.0 функция возвращает ограниченное подмножество свойств:

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

Remarks

Вы можете использовать deployment() ссылку на другой шаблон на основе URI родительского шаблона:

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

Если вы повторно развертываете шаблон из журнала развертывания на портале, шаблон развернется в виде локального файла. Свойство templateLink не возвращается в функции развертывания. Если в шаблоне применяется templateLink для ссылки на другой шаблон, не используйте портал для повторного развертывания. Вместо этого используйте команды, с помощью которых вы развернули исходный шаблон.

Example

В следующем примере возвращается объект развертывания:

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

В предыдущем примере возвращается следующий объект:

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

Для развертывания подписки в следующем примере возвращается объект развертывания:

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

environment

environment()

Возвращает сведения о среде Azure, используемой для развертывания. Функция environment() не знает о конфигурациях ресурсов. Он может возвращать только один DNS-суффикс по умолчанию для каждого типа ресурса.

В Bicep используйте функцию environment .

Remarks

Чтобы просмотреть список зарегистрированных сред для учетной записи, используйте az cloud list или Get-AzEnvironment.

Возвращаемое значение

Эта функция возвращает свойства для текущей среды Azure. В следующем примере показаны свойства глобальной службы Azure; суверенные облака могут возвращать немного разные свойства:

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

Example

Следующий пример шаблона возвращает объект среды:

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

В примере выше возвращается следующий объект при развертывании в глобальной среде 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)

Возвращает значение параметра. Указанное имя параметра должно быть определено в разделе параметров шаблона.

В Bicep напрямую ссылаясь на параметры с помощью их символьных имен.

Parameters

Parameter Required Type Description
parameterName Yes string Имя параметра, который требуется вернуть.

Возвращаемое значение

Значение указанного параметра.

Remarks

Как правило, параметры используются, чтобы задать значения ресурсов. В следующем примере значению параметра задается имя веб-сайта, переданное во время развертывания.

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

Example

В следующем примере показано упрощенное использование 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')]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Name Type Value
stringOutput String вариант 1
intOutput Int 1
objectOutput Object {"one": "a", "two": "b"}
arrayOutput Array [1, 2, 3]
crossOutput String вариант 1

Дополнительные сведения об использовании параметров см. в шаблонах ARM.

variables

variables(variableName)

Возвращает значение переменной. Указанное имя переменной должно быть определено в разделе переменных шаблона.

В Bicep напрямую ссылаясь на переменные, используя их символьные имена.

Parameters

Parameter Required Type Description
variableName Yes String Имя переменной, которую необходимо вернуть.

Возвращаемое значение

Значение указанной переменной.

Remarks

Как правило, переменные используются, чтобы упростить шаблон за счет создания сложных значений (единожды). В следующем примере создается уникальное имя для учетной записи хранения:

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

Example

В следующем примере возвращаются различные значения переменных:

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

Выходные данные значений по умолчанию из предыдущего примера:

Name Type Value
exampleOutput1 String myVariable
exampleOutput2 Array [1, 2, 3, 4]
exampleOutput3 String myVariable
exampleOutput4 Object {"property1": "value1", "property2": "value2"}

Дополнительные сведения об использовании переменных см. в шаблоне ARM.

Дальнейшие шаги

Дополнительные сведения о разделах шаблона ARM см. в структуре и синтаксисе шаблонов ARM.