Impostare il nome e il tipo per le risorse figlio

Le risorse figlio sono risorse presenti solo all'interno del contesto di un'altra risorsa. Ad esempio, un'estensione macchina virtuale non può esistere senza una macchina virtuale. La risorsa di estensione è un elemento figlio della macchina virtuale.

Ogni risorsa padre accetta solo determinati tipi di risorse come risorse figlio. Il tipo di risorsa per la risorsa figlio include il tipo di risorsa per la risorsa padre. Ad esempio, Microsoft.Web/sites/config e Microsoft.Web/sites/extensions sono entrambe risorse figlio di Microsoft.Web/sites. I tipi di risorse accettate sono specificati nel schema del modello della risorsa padre.

In un modello di Azure Resource Manager (modello di ARM) puoi specificare la risorsa figlio all'interno della risorsa padre o all'esterno della risorsa padre. I valori specificati per il nome della risorsa e per il tipo di risorsa variano a seconda che la risorsa figlio sia definita all'interno o all'esterno della risorsa padre.

Suggerimento

È consigliabile Bicep perché offre le stesse funzionalità dei modelli di ARM e la sintassi è più semplice da usare. Per saperne di più, vedi risorse figlio.

All'interno della risorsa padre

Nell'esempio seguente viene illustrata la risorsa figlio inclusa nella proprietà risorse della risorsa padre.

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

Le risorse figlio possono essere solo definite da cinque livelli.

Quando definito all'interno del tipo di risorsa padre, formatta i valori di tipo e di nome come un singolo segmento senza slash.

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

L'esempio seguente mostra una rete virtuale e una subnet. Si noti che la subnet è inclusa nella matrice di risorse per la rete virtuale. Il nome è impostato su Subnet1 e il tipo è impostato su subnets. La risorsa figlio è contrassegnata come dipendente dalla risorsa padre perché la risorsa padre deve esistere prima di poter distribuire la risorsa figlio.

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

Il tipo di risorsa completo è ancora Microsoft.Network/virtualNetworks/subnets. Non si specifica Microsoft.Network/virtualNetworks/ perché viene ottenuto dal tipo della risorsa padre.

Il nome della risorsa figlio è impostato su Subnet1, ma il nome completo include il nome della risorsa padre. Non c’è bisogno di specificare VNet1 perché viene ottenuto dalla risorsa padre.

Risorsa padre esterna

Nell'esempio seguente viene illustrata la risorsa figlio all'esterno della risorsa padre. Potresti usare questo approccio se la risorsa padre non viene distribuita nello stesso modello o se vuoi usare copy per creare più di una risorsa figlio.

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

Quando definito all'esterno della risorsa padre, formatta i valori di tipo e di nome con slash per includere il tipo padre e il nome.

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

L'esempio seguente mostra una rete virtuale e una subnet che sono entrambe definite a livello radice. Si noti che la subnet non è inclusa all’interno della matrice di risorse per la rete virtuale. Il nome è impostato su VNet1/Subnet1 e il tipo è impostato su Microsoft.Network/virtualNetworks/subnets. La risorsa figlio è contrassegnata come dipendente dalla risorsa padre perché la risorsa padre deve esistere prima di poter distribuire la risorsa figlio.

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

Passaggi successivi