Sdílet prostřednictvím


Rychlý start: Vytvoření více instancí prostředků v Bicep

Naučte se používat různé for syntaxe k vytvoření více instancí prostředků v Bicep. I když tento článek ukazuje pouze vytváření více instancí prostředků, lze stejné metody použít k definování kopií modulu, proměnné, vlastnosti nebo výstupu. Další informace najdete v tématu Smyčky Bicep.

Tento článek obsahuje následující témata:

Požadavky

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Pokud chcete nastavit prostředí pro vývoj bicep, přečtěte si téma Instalace nástrojů Bicep. Po dokončení těchto kroků budete mít Visual Studio Code a rozšíření Bicep. Máte také nejnovější Azure CLI nebo nejnovější modul Azure PowerShellu.

Vytvoření jedné instance

V této části definujete soubor Bicep pro vytvoření účtu úložiště a pak nasadíte soubor Bicep. Následující části poskytují ukázky Bicep pro různé for syntaxe. K nasazení a experimentování s těmito ukázkami můžete použít stejnou metodu nasazení. Pokud vaše nasazení selže, je pravděpodobně jednou z těchto dvou příčin:

  • Název účtu úložiště je příliš dlouhý. Názvy účtů úložiště musí mít délku 3 až 24 znaků a můžou obsahovat jenom číslice a malá písmena.
  • Název účtu úložiště není jedinečný. Váš název účtu úložiště musí být jedinečný v rámci Azure.

Následující soubor Bicep definuje jeden účet úložiště:

param rgLocation string = resourceGroup().location

resource createStorage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Uložte soubor Bicep místně a pak pomocí Azure CLI nebo Azure PowerShellu nasaďte soubor Bicep:

resourceGroupName = "{provide-a-resource-group-name}"
templateFile="{provide-the-path-to-the-bicep-file}"

az group create --name $resourceGroupName --location eastus

az deployment group create --resource-group $resourceGroupName --template-file $templateFile

Použití celočíselného indexu

Smyčka for s indexem se používá v následující ukázce k vytvoření dvou účtů úložiště:

param rgLocation string = resourceGroup().location
param storageCount int = 2

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for i in range(0, storageCount): {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

output names array = [for i in range(0,storageCount) : {
  name: createStorages[i].name
} ]

Číslo indexu se používá jako součást názvu účtu úložiště. Po nasazení souboru Bicep získáte dva účty úložiště, které jsou podobné:

Použití celočíselného indexu s číslem 0 jako počátečním číslem

Uvnitř rozsahu(), prvním číslem je počáteční číslo a druhým číslem je počet spuštění smyčky. Pokud ho tedy změníte na rozsah (3,2), získáte také dva účty úložiště:

Použití celočíselného indexu se 3 jako počátečním číslem

Výstup předchozí ukázky ukazuje, jak odkazovat na prostředky vytvořené ve smyčce. Výstup je podobný tomuto:

"outputs": {
  "names": {
    "type": "Array",
    "value": [
      {
        "name": "0storage52iyjssggmvue"
      },
      {
        "name": "1storage52iyjssggmvue"
      }
    ]
  }
},

Použití prvků pole

Můžete procházet pole. Následující ukázka ukazuje pole řetězců.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for name in storageNames: {
  name: '${name}str${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Smyčka používá všechny řetězce v poli jako součást názvů účtů úložiště. V tomto případě vytvoří dva účty úložiště:

Použití pole řetězců

Můžete také procházet pole objektů. Smyčka nejen přizpůsobí názvy účtů úložiště, ale také nakonfiguruje skladové položky.

param rgLocation string = resourceGroup().location
param storages array = [
  {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
]

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storage in storages: {
  name: '${storage.name}obj${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: storage.skuName
  }
  kind: 'StorageV2'
}]

Smyčka vytvoří dva účty úložiště. Skladová položka účtu úložiště s názvem začínajícím na fabrikam je Premium_LRS.

Použití pole řetězců

Použití pole a indexu

Ve stejných případech můžete chtít zkombinovat maticovou smyčku se smyčkou indexu. Následující ukázka ukazuje, jak použít pole a číslo indexu pro konvenci pojmenování.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for (name, i) in storageNames: {
  name: '${i}${name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Po nasazení předchozí ukázky vytvoříte dva účty úložiště, které jsou podobné:

Použití pole řetězců a čísla indexu

Použití objektu slovníku

Chcete-li iterovat prvky v objektu slovníku, použijte funkci items, která převede objekt na pole. value Vlastnost slouží k získání vlastností objektů.

param rgLocation string = resourceGroup().location

param storageConfig object = {
  storage1: {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  storage2: {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
}

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for config in items(storageConfig): {
  name: '${config.value.name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: config.value.skuName
  }
  kind: 'StorageV2'
}]

Smyčka vytvoří dva účty úložiště. Skladová položka účtu úložiště s názvem začínajícím na fabrikam je Premium_LRS.

Použití objektu slovníku

Smyčka s podmínkou

Pro prostředky a moduly můžete přidat if výraz se syntaxí smyčky pro podmíněné nasazení kolekce.

param rgLocation string = resourceGroup().location
param storageCount int = 2
param createNewStorage bool = true

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for i in range(0, storageCount): if(createNewStorage) {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Další informace najdete v tématu podmíněné nasazení v bicep.

Vyčištění prostředků

Pokud už prostředky Azure nepotřebujete, pomocí azure CLI nebo modulu Azure PowerShell odstraňte skupinu prostředků pro rychlý start.

resourceGroupName = "{provide-the-resource-group-name}"

az group delete --name $resourceGroupName

Další kroky