Funções de implantação para modelos ARM
O Resource Manager fornece as seguintes funções para obter valores relacionados à implantação atual do seu modelo do Azure Resource Manager (modelo ARM):
Para obter valores de recursos, grupos de recursos ou assinaturas, consulte Funções de recurso.
Gorjeta
Recomendamos o Bicep porque ele oferece os mesmos recursos que os modelos ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte Funções de implantação .
implementação
deployment()
Retorna informações sobre a operação de implantação atual.
No Bicep, use a função de implantação .
Valor devolvido
Essa função retorna o objeto que é passado durante a implantação. As propriedades no objeto retornado diferem com base no fato de você estar:
- implantando um modelo ou uma especificação de modelo.
- implantando um modelo que é um arquivo local ou implantando um modelo que é um arquivo remoto acessado por meio de um URI.
- implantando em um grupo de recursos ou implantando em um dos outros escopos (assinatura do Azure, grupo de gerenciamento ou locatário).
Ao implantar um modelo local em um grupo de recursos: a função retorna o seguinte formato:
{
"name": "",
"properties": {
"template": {
"$schema": "",
"contentVersion": "",
"parameters": {},
"variables": {},
"resources": [],
"outputs": {}
},
"templateHash": "",
"parameters": {},
"mode": "",
"provisioningState": ""
}
}
Ao implantar um modelo remoto em um grupo de recursos: a função retorna o seguinte formato:
{
"name": "",
"properties": {
"templateLink": {
"uri": ""
},
"template": {
"$schema": "",
"contentVersion": "",
"parameters": {},
"variables": {},
"resources": [],
"outputs": {}
},
"templateHash": "",
"parameters": {},
"mode": "",
"provisioningState": ""
}
}
Ao implantar uma especificação de modelo em um grupo de recursos: a função retorna o seguinte formato:
{
"name": "",
"properties": {
"templateLink": {
"id": ""
},
"template": {
"$schema": "",
"contentVersion": "",
"parameters": {},
"variables": {},
"resources": [],
"outputs": {}
},
"templateHash": "",
"parameters": {},
"mode": "",
"provisioningState": ""
}
}
Quando você implanta em uma assinatura, grupo de gerenciamento ou locatário do Azure, o objeto de retorno inclui uma location
propriedade. A propriedade location é incluída ao implantar um modelo local ou um modelo externo. O formato é:
{
"name": "",
"location": "",
"properties": {
"template": {
"$schema": "",
"contentVersion": "",
"resources": [],
"outputs": {}
},
"templateHash": "",
"parameters": {},
"mode": "",
"provisioningState": ""
}
}
Ao implantar um modelo languageVersion 2.0 , a deployment
função retorna um subconjunto limitado de propriedades:
{
"name": "",
"location": "",
"properties": {
"template": {
"contentVersion": ""
},
"templateLink": {
"id": "",
"uri": ""
}
}
}
Observações
Você pode usar deployment()
para vincular a outro modelo com base no URI do modelo pai.
"variables": {
"sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"
}
Se você reimplantar um modelo a partir do histórico de implantação no portal, o modelo será implantado como um arquivo local. A templateLink
propriedade não é retornada na função de implantação. Se o seu modelo depende templateLink
para construir um link para outro modelo, não use o portal para reimplantar. Em vez disso, use os comandos usados para implantar originalmente o modelo.
Exemplo
O exemplo a seguir retorna um objeto de implantação.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"deploymentOutput": {
"type": "object",
"value": "[deployment()]"
}
}
}
O exemplo anterior retorna o seguinte objeto:
{
"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"
}
}
Para uma implantação de assinatura, o exemplo a seguir retorna um objeto de implantação.
{
"$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()]"
}
}
}
ambiente
environment()
Retorna informações sobre o ambiente do Azure usado para implantação. A environment()
função não está ciente das configurações de recursos. Ele só pode retornar um único sufixo DNS padrão para cada tipo de recurso.
No Bicep, use a função ambiente .
Observações
Para ver uma lista de ambientes registrados para sua conta, use az cloud list ou Get-AzEnvironment.
Valor devolvido
Essa função retorna propriedades para o ambiente atual do Azure. O exemplo a seguir mostra as propriedades do Azure global. Nuvens soberanas podem retornar propriedades ligeiramente diferentes.
{
"name": "",
"gallery": "",
"graph": "",
"portal": "",
"graphAudience": "",
"activeDirectoryDataLake": "",
"batch": "",
"media": "",
"sqlManagement": "",
"vmImageAliasDoc": "",
"resourceManager": "",
"authentication": {
"loginEndpoint": "",
"audiences": [
"",
""
],
"tenant": "",
"identityProvider": ""
},
"suffixes": {
"acrLoginServer": "",
"azureDatalakeAnalyticsCatalogAndJob": "",
"azureDatalakeStoreFileSystem": "",
"azureFrontDoorEndpointSuffix": "",
"keyvaultDns": "",
"sqlServerHostname": "",
"storage": ""
}
}
Exemplo
O modelo de exemplo a seguir retorna o objeto de ambiente.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"environmentOutput": {
"type": "object",
"value": "[environment()]"
}
}
}
O exemplo anterior retorna o seguinte objeto quando implantado no Azure global:
{
"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"
}
}
parâmetros
parameters(parameterName)
Retorna um valor de parâmetro. O nome do parâmetro especificado deve ser definido na seção de parâmetros do modelo.
No Bicep, referenciar diretamente parâmetros usando seus nomes simbólicos.
Parâmetros
Parâmetro | Necessário | Type | Description |
---|---|---|---|
nome_parâmetro | Sim | string | O nome do parâmetro a ser retornado. |
Valor devolvido
O valor do parâmetro especificado.
Observações
Normalmente, você usa parâmetros para definir valores de recurso. O exemplo a seguir define o nome do site como o valor do parâmetro passado durante a implantação.
"parameters": {
"siteName": {
"type": "string"
}
}, "resources": [
{
"type": "Microsoft.Web/Sites",
"apiVersion": "2016-08-01",
"name": "[parameters('siteName')]",
...
}
]
Exemplo
O exemplo a seguir mostra um uso simplificado da função 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')]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | valor |
---|---|---|
stringOutput | String | Opção 1 |
intOutput | Int | 1 |
objectOutput | Object | {"um": "a", "dois": "b"} |
arrayOutput | Matriz | [1, 2, 3] |
crossOutput | String | Opção 1 |
Para obter mais informações sobre como usar parâmetros, consulte Parâmetros em modelos ARM.
variáveis
variables(variableName)
Devolve o valor da variável. O nome da variável especificada deve ser definido na seção de variáveis do modelo.
No Bicep, referencia diretamente variáveis usando seus nomes simbólicos.
Parâmetros
Parâmetro | Necessário | Type | Description |
---|---|---|---|
nomevariável | Sim | String | O nome da variável a ser retornada. |
Valor devolvido
O valor da variável especificada.
Observações
Normalmente, você usa variáveis para simplificar seu modelo construindo valores complexos apenas uma vez. O exemplo a seguir constrói um nome exclusivo para uma conta de armazenamento.
"variables": {
"storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageName')]",
...
},
{
"type": "Microsoft.Compute/virtualMachines",
"dependsOn": [
"[variables('storageName')]"
],
...
}
],
Exemplo
O exemplo a seguir retorna valores de variáveis diferentes.
{
"$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')]"
}
}
}
A saída do exemplo anterior com os valores padrão é:
Nome | Tipo | valor |
---|---|---|
exemploOutput1 | String | myVariable |
exemploSaída2 | Matriz | [1, 2, 3, 4] |
exemploSaída3 | String | myVariable |
exemploOutput4 | Object | {"propriedade1": "valor1", "propriedade2": "valor2"} |
Para obter mais informações sobre como usar variáveis, consulte Variáveis no modelo ARM.
Próximos passos
- Para obter uma descrição das seções em um modelo ARM, consulte Compreender a estrutura e a sintaxe dos modelos ARM.