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 nástroji Bicep. I když tento článek popisuje pouze vytváření více instancí prostředků, stejné metody lze 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:
- použití celočíselného indexu
- Použití elementů pole
- použití pole a indexu
- použití objektu slovníku
- smyčka s podmínkou
Požadavky
Pokud předplatné Azure ještě nemáte, napřed si vytvořte bezplatný účet.
Informace o nastavení prostředí pro vývoj bicep najdete v tématu 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 PowerShell.
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 obsahují ukázky Bicep pro různé for
syntaxe. Stejnou metodu nasazení můžete použít k nasazení a experimentování s těmito ukázkami. Pokud vaše nasazení selže, je to pravděpodobně jedna ze 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@2022-09-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 PowerShell 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@2022-09-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é:
Inside range() je první číslo počátečním číslem a druhé číslo je počet spuštění smyčky. Pokud ho tedy změníte na range(3,2), získáte také dva účty úložiště:
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í elementů pole
Můžete procházet pole ve smyčce. Následující ukázka ukazuje pole řetězců.
param rgLocation string = resourceGroup().location
param storageNames array = [
'contoso'
'fabrikam'
]
resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-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ě:
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@2022-09-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 a indexu
Ve stejných případech můžete chtít zkombinovat smyčku pole se smyčkou indexu. Následující ukázka ukazuje, jak použít pole a číslo indexu pro zásady vytváření názvů.
param rgLocation string = resourceGroup().location
param storageNames array = [
'contoso'
'fabrikam'
]
resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-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é se podobají následujícím účtům:
Použití objektu slovníku
K iteraci prvků v objektu slovníku použijte funkci items, která objekt převede na pole. Vlastnost použijte value
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@2022-09-01' = [for config in items(storageConfig): {
name: '${config.value.name}${uniqueString(resourceGroup().id)}'
location: rgLocation
sku: {
name: config.value.skuName
}
kind: 'StorageV2'
}]
The loop creates two storage accounts. The SKU of the storage account with the name starting with fabrikam is Premium_LRS.
Smyčka s podmínkou
Pro prostředky a moduly můžete přidat if
výraz se syntaxí smyčky, který kolekci podmíněně nasadí.
param rgLocation string = resourceGroup().location
param storageCount int = 2
param createNewStorage bool = true
resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-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 Nástroji 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ů rychlého startu.
resourceGroupName = "{provide-the-resource-group-name}"
az group delete --name $resourceGroupName