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:
- použití celočíselného indexu
- použití prvků pole
- použití pole a indexu
- použití objektu slovníku
- smyčka s podmínkou
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é:
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ě:
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ě:
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 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í 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.
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