Deklarace prostředků v bicep

Tento článek popisuje syntaxi, kterou použijete k přidání prostředku do souboru bicep.

Deklarace

Přidejte deklaraci prostředku pomocí resource klíčového slova. Nastavili jste symbolický název prostředku. Symbolický název není stejný jako název prostředku. Pomocí symbolického názvu se odkazuje na prostředek v jiných částech souboru bicep.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Deklarace účtu úložiště proto může začínat na:

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  ...
}

Symbolické názvy rozlišují velká a malá písmena. Můžou obsahovat písmena, číslice a podtržítka ( _ ). Nemůžou začínat číslem. Prostředek nemůže mít stejný název jako parametr, proměnná nebo modul.

Dostupné typy a verze prostředků najdete v tématu Reference k prostředkům bicep. Bicep nepodporuje apiProfile , což je k dispozici ve formátu JSON šablony pro Azure Resource Manager (šablony ARM).

K podmíněnému nasazení prostředku použijte if syntaxi. Další informace najdete v tématu podmíněné nasazení v bicep.

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

Chcete-li nasadit více než jednu instanci prostředku, použijte for syntaxi. Pomocí batchSize dekoratér můžete určit, jestli se instance nasazují podle sériového nebo paralelního. Další informace najdete v tématu iterativní smyčky v bicep.

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

Pomocí for syntaxe ve vlastnostech prostředků můžete také vytvořit pole.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

Název prostředku

Každý prostředek má název. Při nastavování názvu prostředku věnujte pozornost pravidlům a omezením názvů prostředků.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  ...
}

Obvykle byste název nastavili na parametr, aby bylo možné během nasazení předat do různých hodnot.

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageAccountName
  ...
}

Umístění

Mnoho prostředků vyžaduje umístění. Můžete určit, zda prostředek potřebuje umístění buď prostřednictvím technologie IntelliSense, nebo odkazem na šablonu. Následující příklad přidá parametr Location, který se používá pro účet úložiště.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

Obvykle byste nastavili umístění pro parametr, abyste mohli nasadit do různých umístění.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: location
  ...
}

Různé typy prostředků jsou podporovány v různých umístěních. Podporovaná umístění pro službu Azure najdete v tématu Dostupné produkty v jednotlivých oblastech. pro získání podporovaných umístění pro typ prostředku použijte Azure PowerShell nebo Azure CLI.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

Značky

V průběhu nasazování můžete použít značky na prostředek. Značky vám pomůžou logicky organizovat nasazené prostředky. Příklady různých způsobů, jak lze zadat značky, naleznete v tématu Tagy šablony ARM.

Spravované identity pro prostředky Azure

Některé prostředky podporují spravované identity pro prostředky Azure. Tyto prostředky mají objekt identity na kořenové úrovni deklarace prostředku.

Můžete použít identitu přiřazené systémem nebo uživatelem.

Následující příklad ukazuje, jak nakonfigurovat identitu přiřazenou systémem pro cluster služby Azure Kubernetes.

resource aks 'Microsoft.ContainerService/managedClusters@2020-09-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

Další příklad ukazuje, jak nakonfigurovat identitu přiřazenou uživatelem pro virtuální počítač.

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Vlastnosti specifické pro prostředky

Předchozí vlastnosti jsou obecné pro většinu typů prostředků. Po nastavení těchto hodnot je potřeba nastavit vlastnosti, které jsou specifické pro typ prostředku, který nasazujete.

Pomocí technologie IntelliSense nebo bicep odkaz na prostředek určete, které vlastnosti jsou k dispozici a které jsou požadovány. Následující příklad nastaví zbývající vlastnosti účtu úložiště.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Závislosti

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

Azure Resource Manager vyhodnocuje závislosti mezi prostředky a nasadí je v jejich 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 nasazeny ve stejném souboru bicep.

Implicitní závislost

Implicitní závislost je vytvořena, když jedna deklarace prostředku odkazuje na jiný prostředek ve stejném nasazení. Například na zónu odkazuje druhá definice prostředků v následujícím příkladu:

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

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

Vnořený prostředek má také implicitní závislost na svém prostředku, který ho obsahuje.

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

  // depends on 'myParent' implicitly
  resource myChild 'childType' = {
    name: 'myChild'
  }
}

Pokud existuje implicitní závislost, nepřidejte 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 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.

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ůže být pro dependsOn mapování vztahů mezi prostředky použit sklon, je důležité pochopit, proč to děláte. Například k dokumentaci, jak jsou prostředky propojeny, dependsOn není správným přístupem. Po nasazení nemůžete zadat dotaz na prostředky, které byly definovány v dependsOn elementu. Nastavení zbytečných závislostí zpomaluje dobu nasazení, protože Správce prostředků nemůže tyto prostředky paralelně nasadit.

I když se někdy vyžadují explicitní závislosti, je potřeba, aby tyto požadavky byly zřídka. Ve většině případů můžete použít symbolický název, který implikuje závislost mezi prostředky. Pokud se rozhodnete nastavit explicitní závislosti, měli byste zvážit, jestli existuje způsob, jak ho odebrat.

Vizualizace závislostí

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

snímek obrazovky Visual Studio Code vizualizér prostředků Bicep

Existující prostředky

Chcete-li odkazovat na prostředek, který je mimo aktuální soubor bicep, použijte existing klíčové slovo v deklaraci prostředku.

Při použití existing klíčového slova zadejte name prostředek. Následující příklad načte existující účet úložiště ve stejné skupině prostředků jako aktuální nasazení.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
  name: 'examplestorage'
}

output blobEndpoint string = stg.properties.primaryEndpoints.blob

Volitelně můžete nastavit scope vlastnost pro přístup k prostředku v jiném oboru. Následující příklad odkazuje na existující účet úložiště v jiné skupině prostředků.

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' existing = {
  name: 'examplestorage'
  scope: resourceGroup(exampleRG)
}

output blobEndpoint string = stg.properties.primaryEndpoints.blob

Pokud se pokusíte vytvořit odkaz na prostředek, který neexistuje, dojde k NotFound chybě a nasazení se nezdaří.

Další informace o nastavení rozsahu najdete v tématu věnovaném funkcím oboru pro bicep.

Předchozí příklady nesadí účet úložiště. Místo toho můžete získat přístup k vlastnostem stávajícího prostředku pomocí symbolického názvu.

Další kroky