Závislosti prostředků v Bicep

Při nasazování prostředků možná budete muset zajistit, aby se některé prostředky nasadily před jinými prostředky. Před nasazením databáze potřebujete například logický SQL server. Tento vztah vytvoříte tak, že jeden prostředek označíte jako závislý na druhém prostředku. Pořadí nasazení prostředků se určuje dvěma způsoby: implicitní závislost a explicitní závislost.

Azure Resource Manager vyhodnocuje závislosti mezi prostředky a nasazuje je v závislém pořadí. Pokud na sobě prostředky nezávisí, Resource Manager je nasadí paralelně. Stačí definovat závislosti pro prostředky, které jsou nasazené ve stejném souboru Bicep.

Implicitní závislost

Implicitní závislost se vytvoří, když jedna deklarace prostředku odkazuje na jiný prostředek ve stejném nasazení. V následujícím příkladu otherResource získá vlastnost z exampleDnsZone. Prostředek s názvem otherResource je implicitně závislý na exampleDnsZone.

resource exampleDnsZone 'Microsoft.Network/dnszones@2018-05-01' = {
  name: 'myZone'
  location: 'global'
}

resource otherResource 'Microsoft.Example/examples@2023-05-01' = {
  name: 'exampleResource'
  properties: {
    // get read-only DNS zone property
    nameServers: exampleDnsZone.properties.nameServers
  }
}

Vnořený prostředek má také implicitní závislost na svém obsahujícím prostředku.

resource myParent 'My.Rp/parentType@2023-05-01' = {
  name: 'myParent'
  location: 'West US'

  // implicit dependency on 'myParent'
  resource myChild 'childType' = {
    name: 'myChild'
  }
}

Prostředek, který obsahuje nadřazenou vlastnost, má implicitní závislost na nadřazených prostředcích. Závisí na nadřazených prostředcích, nikoli na ostatních podřízených prostředcích.

Následující příklad ukazuje účet úložiště a souborovou službu. Souborová služba má implicitní závislost na účtu úložiště.

resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'examplestorage'
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource service 'Microsoft.Storage/storageAccounts/fileServices@2022-09-01' = {
  name: 'default'
  parent: storage
}

Pokud existuje implicitní závislost, nepřidávejte explicitní závislost.

Další informace o vnořených prostředcích najdete v tématu Nastavení názvu a typu pro podřízené prostředky v nástroji Bicep.

Explicitní závislost

Explicitní závislost je deklarována s dependsOn vlastností . Vlastnost přijímá pole identifikátorů prostředků, takže můžete zadat více než jednu závislost. Závislost na vnořených prostředcích můžete zadat pomocí operátoru:: .

Následující příklad ukazuje zónu DNS s názvem otherZone , která závisí na zóně DNS s názvem dnsZone:

resource dnsZone 'Microsoft.Network/dnszones@2018-05-01' = {
  name: 'demoeZone1'
  location: 'global'
}

resource otherZone 'Microsoft.Network/dnszones@2018-05-01' = {
  name: 'demoZone2'
  location: 'global'
  dependsOn: [
    dnsZone
  ]
}

I když můžete mít tendenci mapovat dependsOn vztahy mezi prostředky, je důležité pochopit, proč to děláte. Například dokumentovat, jak jsou prostředky vzájemně propojené, dependsOn není správný přístup. Po nasazení prostředek nezachovává závislosti nasazení ve svých vlastnostech, takže neexistují žádné příkazy ani operace, které by vám umožnily zobrazit závislosti. Nastavení nepotřebných závislostí zpomalí dobu nasazení, protože Resource Manager tyto prostředky nemůžou nasadit paralelně.

I když se explicitní závislosti někdy vyžadují, jejich potřeba je vzácná. Ve většině případů můžete k označení závislosti mezi prostředky použít symbolický název. Pokud zjistíte, že nastavujete explicitní závislosti, měli byste zvážit, jestli existuje způsob, jak je odebrat.

Vizualizace závislostí

Visual Studio Code poskytuje nástroj pro vizualizaci závislostí. Otevřete soubor Bicep v editoru Visual Studio Code a vyberte tlačítko vizualizéru v levém horním rohu. Následující snímek obrazovky ukazuje závislosti virtuálního počítače.

Snímek obrazovky s vizualizérem prostředků Bicep v editoru Visual Studio Code

Další kroky

Syntaxi nasazení prostředku najdete v tématu Deklarace prostředku v bicep.