Defina o nome e o tipo dos recursos filhos

Recursos filho são recursos que existem apenas no contexto de outro recurso. Por exemplo, uma extensão de máquina virtual não pode existir sem uma máquina virtual. O recurso de extensão é filho da máquina virtual.

Cada recurso pai aceita somente determinados tipos de recurso como recursos filho. O tipo de recurso para o recurso filho inclui o tipo de recurso para o recurso pai. Por exemplo, Microsoft.Web/sites/config e Microsoft.Web/sites/extensions são recursos filhos de Microsoft.Web/sites. Os tipos de recurso aceitos são especificados no esquema do modelo do recurso pai.

Em um modelo do Azure Resource Manager (modelo ARM), você pode especificar o recurso filho dentro do recurso pai ou fora do recurso pai. Os valores fornecidos para o nome do recurso e tipo do recurso variam com base no fato de o recurso filho ser definido dentro ou fora do recurso pai.

Dica

Recomendamos o Bicep porque ele oferece as mesmas funcionalidades que os modelos do ARM e a sintaxe é mais fácil de usar. Para saber mais, confira recursos filho.

Dentro do recurso pai

O exemplo a seguir mostra o recurso filho incluído na propriedade do recurso pai.

"resources": [
  {
    <parent-resource>
    "resources": [
      <child-resource>
    ]
  }
]

Os recursos filho só podem ser definidos em cinco níveis de profundidade.

Quando definido dentro do tipo de recurso pai, você formata os valores de tipo e nome como um único segmento sem barras.

"type": "{child-resource-type}",
"name": "{child-resource-name}",

O exemplo a seguir cria uma rede virtual e uma sub-rede. Observe que a sub-rede está incluída na matriz de recursos para a rede virtual. O nome é definido como Subnet1 e o tipo é definido como sub-redes. O recurso filho é marcado como dependente do recurso pai porque o recurso pai deve existir antes que o recurso filho possa ser implantado.

"resources": [
  {
    "type": "Microsoft.Network/virtualNetworks",
    "apiVersion": "2022-11-01",
    "name": "VNet1",
    "location": "[parameters('location')]",
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
        ]
      }
    },
    "resources": [
      {
        "type": "subnets",
        "apiVersion": "2022-11-01",
        "name": "Subnet1",
        "dependsOn": [
          "VNet1"
        ],
        "properties": {
          "addressPrefix": "10.0.0.0/24"
        }
      }
    ]
  }
]

O tipo de recurso completo ainda é Microsoft.Network/virtualNetworks/subnets. Microsoft.Network/virtualNetworks/ não é fornecido porque ele é presumido do tipo de recurso pai.

O nome do recurso filho é definido como Subnet1, mas o nome completo inclui o nome pai. Você não fornece VNet1 porque é assumido a partir do recurso pai.

Recurso pai externo

O exemplo a seguir mostra o recurso filho fora do recurso pai. Você pode usar essa abordagem se o recurso pai não for implantado no mesmo modelo ou se quiser usar a cópia para criar mais de um recurso filho.

"resources": [
  {
    <parent-resource>
  },
  {
    <child-resource>
  }
]

Quando definido fora do recurso pai, você formata os valores de tipo e nome com barras para incluir o tipo e o nome pai.

"type": "{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}",
"name": "{parent-resource-name}/{child-resource-name}",

O exemplo a seguir mostra uma rede virtual e uma sub-rede que são definidas no nível raiz. Observe que a sub-rede não está incluída na matriz de recursos da rede virtual. O nome é definido como VNet1/Subnet1 e o tipo é definido como Microsoft.Network/virtualNetworks/subnets. O recurso filho é marcado como dependente do recurso pai porque o recurso pai deve existir antes que o recurso filho possa ser implantado.

"resources": [
  {
    "type": "Microsoft.Network/virtualNetworks",
    "apiVersion": "2022-11-01",
    "name": "VNet1",
    "location": "[parameters('location')]",
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
        ]
      }
    }
  },
  {
    "type": "Microsoft.Network/virtualNetworks/subnets",
    "apiVersion": "2022-11-01",
    "name": "VNet1/Subnet1",
    "dependsOn": [
      "VNet1"
    ],
    "properties": {
      "addressPrefix": "10.0.0.0/24"
    }
  }
]

Próximas etapas