Rövid útmutató: Több erőforráspéldány létrehozása a Bicepben
Megtudhatja, hogyan hozhat létre több erőforráspéldányt a Bicepben különböző for
szintaxisokkal. Bár ez a cikk csak több erőforráspéldány létrehozását mutatja be, ugyanezekkel a módszerekkel definiálhatók a modul, a változó, a tulajdonság vagy a kimenet másolatai. További információ: Bicep-hurkok.
Ez a cikk a következő témaköröket tartalmazza:
- egész szám index használata
- tömbelemek használata
- tömb és index használata
- szótárobjektum használata
- ciklus feltétellel
Előfeltételek
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
A Bicep-fejlesztés környezetének beállításához tekintse meg a Bicep-eszközök telepítését. A lépések elvégzése után a Visual Studio Code és a Bicep bővítmény lesz a rendelkezésére. A legújabb Azure CLI-vel vagy a legújabb Azure PowerShell-modullal is rendelkezik.
Egyetlen példány létrehozása
Ebben a szakaszban definiál egy Bicep-fájlt egy tárfiók létrehozásához, majd a Bicep-fájl üzembe helyezéséhez. A következő szakaszok különböző szintaxisokhoz biztosítják a for
Bicep-mintákat. Ugyanezzel az üzembe helyezési módszerrel telepítheti és kísérletezheti ezeket a mintákat. Ha az üzembe helyezés meghiúsul, az valószínűleg a két ok egyike:
- A tárfiók neve túl hosszú. A tárfiókok neve 3–24 karakter hosszúságú lehet, és csak számokból és kisbetűkből állhat.
- A tárfiók neve nem egyedi. A tárfiók nevének egyedinek kell lennie az Azure rendszerben.
A következő Bicep-fájl egy tárfiókot határoz meg:
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'
}
Mentse a Bicep-fájlt helyileg, majd az Azure CLI vagy az Azure PowerShell használatával telepítse a Bicep-fájlt:
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
Egész szám index használata
A következő mintában egy indexet tartalmazó ciklust használunk két tárfiók létrehozásához:
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
} ]
Az indexszámot a tárfiók nevének részeként használja a rendszer. A Bicep-fájl üzembe helyezése után két olyan tárfiókot kap, amelyek a következőkhöz hasonlóak:
A tartományon() belül az első szám a kezdő szám, a második pedig az a szám, amely a ciklus futásának hányszorosát adja meg. Ha tehát tartományra (3,2) módosítja, két tárfiókot is kap:
Az előző minta kimenete bemutatja, hogyan hivatkozhat a ciklusban létrehozott erőforrásokra. Az eredmény az alábbihoz hasonlóan fog kinézni:
"outputs": {
"names": {
"type": "Array",
"value": [
{
"name": "0storage52iyjssggmvue"
},
{
"name": "1storage52iyjssggmvue"
}
]
}
},
Tömbelemek használata
Egy tömbön végighaladhat. Az alábbi minta egy sztringtömböt mutat be.
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'
}]
A hurok a tömb összes sztringét használja a tárfióknevek részeként. Ebben az esetben két tárfiókot hoz létre:
Az objektumok tömbje is végigfuttatható. A hurok nem csak testre szabja a tárfiókok nevét, hanem konfigurálja az SKU-kat is.
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'
}]
A hurok két tárfiókot hoz létre. A fabrikam névvel kezdődő tárfiók termékváltozata Premium_LRS.
Tömb és index használata
Ugyanezekben az esetekben érdemes lehet egy tömbhurkot indexhurokkal kombinálni. Az alábbi minta bemutatja, hogyan használhatja a tömböt és az elnevezési konvenció indexszámát.
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'
}]
Az előző minta üzembe helyezése után két olyan tárfiókot hoz létre, amelyek a következőkhöz hasonlóak:
Szótárobjektum használata
Ha egy szótárobjektum elemeit szeretné iterálni, használja az elemek függvényt, amely tömbté alakítja az objektumot. value
A tulajdonság használatával lekérheti az objektumok tulajdonságait.
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'
}]
A hurok két tárfiókot hoz létre. A fabrikam névvel kezdődő tárfiók termékváltozata Premium_LRS.
Ciklus feltétellel
Erőforrások és modulok esetén hozzáadhat egy if
ciklusszintaxissal rendelkező kifejezést a gyűjtemény feltételes üzembe helyezéséhez.
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'
}]
További információ: feltételes üzembe helyezés a Bicepben.
Az erőforrások eltávolítása
Ha az Azure-erőforrásokra már nincs szükség, az Azure CLI vagy az Azure PowerShell modul használatával törölje a rövid útmutató erőforráscsoportját.
resourceGroupName = "{provide-the-resource-group-name}"
az group delete --name $resourceGroupName