Resultados em ARM modelos

Este artigo descreve como definir valores de saída no seu modelo do Gestor de Recursos do Azure (ARM modelo). Utilize os resultados quando precisar de devolver valores dos recursos implementados.

O formato de cada valor de saída tem de ser resolvido para um dos tipos de dados.

Definir valores de saída

O exemplo seguinte mostra como devolver uma propriedade de um recurso implementado.

Adicione outputs a secção ao modelo. O valor de saída obtete o nome de domínio completamente qualificado para um endereço IP público.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
  },
}

Se precisar de saída de uma propriedade que tenha um hífen no nome, utilize parênteses à volta do nome em vez de notação de ponto. Por exemplo, utilize ['property-name'] em vez de .property-name .

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "user": {
      "user-name": "Test Person"
    }
  },
  "resources": [
  ],
  "outputs": {
    "nameResult": {
      "type": "string",
      "value": "[variables('user')['user-name']]"
    }
  }
}

Saída condicional

Pode utilizar o elemento condition para devolver condicionalmente um valor. Normalmente, utiliza uma saída condicional quando implementa condicionalmente um recurso. O exemplo seguinte mostra como devolver condicionalmente o ID de recurso de um endereço IP público com base na implementação de um novo:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Para um exemplo simples de saída condicional, consulte Modelo de saída condicional.

Número dinâmico de resultados

Em alguns cenários, não sabe o número de ocorrências de um valor que precisa de devolver ao criar o modelo. Pode devolver um número variável de valores utilizando saída iterativa. Adicione o copy elemento para iterar um resultado.

"outputs": {
  "storageEndpoints": {
    "type": "array",
    "copy": {
      "count": "[parameters('storageCount')]",
      "input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
    }
  }
}

Para obter mais informações, consulte Iteração de saída ARM modelos.

Modelos ligados

Pode implementar modelos relacionados através de modelos ligados. Para obter o valor de saída de um modelo ligado, utilize a função de referência no modelo principal. A sintaxe no modelo principal é:

"[reference('<deploymentName>').outputs.<propertyName>.value]"

O exemplo seguinte mostra como definir o endereço IP num balanceador de carga ao recuperar um valor de um modelo ligado.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

Se o nome da propriedade tiver um hífen, utilize parênteses retos à volta do nome em vez de uma notação de ponto.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs['resource-ID'].value]"
}

Não pode utilizar a função reference na secção de resultados de um modelo reference Para devolver os valores de um recurso implementado num modelo aninhado, converta o seu modelo aninhado num modelo ligado.

O modelo Endereço IP Público cria um endereço IP público e gera o ID do recurso. O modelo Balanceador de carga liga ao modelo anterior. Utiliza o ID do recurso no resultado ao criar o balanceador de carga.

Modelo de exemplo

O modelo seguinte não implementa recursos. Apresenta algumas formas de devolver resultados de diferentes tipos.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[deployment().name]"
    },
    "integerOutput": {
      "type": "int",
      "value": "[length(environment().authentication.audiences)]"
    },
    "booleanOutput": {
      "type": "bool",
      "value": "[contains(deployment().name, 'demo')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[environment().authentication.audiences]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[subscription()]"
    }
  }
}

Obter valores de saída

Quando a implementação tiver êxito, os valores de saída são devolvidos automaticamente nos resultados da implementação.

Para obter valores de saída do histórico de implementação, pode utilizar o script.

(Get-AzResourceGroupDeployment `
  -ResourceGroupName <resource-group-name> `
  -Name <deployment-name>).Outputs.resourceID.value

Passos seguintes

  • Para saber mais sobre as propriedades disponíveis para resultados, consulte Compreender a estrutura e sintaxe dos ARM modelos.