Linter-regel: expliciete waarden gebruiken voor modulelocatieparameters
Met deze regel worden moduleparameters gevonden die worden gebruikt voor resourcelocaties en die per ongeluk standaard worden ingesteld op een onverwachte waarde.
Linter-regelcode
Gebruik de volgende waarde in het Bicep-configuratiebestand om regelinstellingen aan te passen:
explicit-values-for-loc-params
Oplossing
Wanneer u een module gebruikt, moeten aan locatiegerelateerde parameters met een standaardwaarde een expliciete waarde worden toegewezen. Locatiegerelateerde parameters bevatten parameters met een standaardwaarde die verwijst naar resourceGroup().location
of deployment().location
ook een parameter waarnaar wordt verwezen vanuit de locatie-eigenschap van een resource.
Een parameter die standaard wordt gebruikt voor de locatie van een resourcegroep of implementatie is handig wanneer een bicep-bestand wordt gebruikt als een hoofdimplementatiesjabloon. Wanneer een dergelijke standaardwaarde echter wordt gebruikt in een module, kan dit onverwacht gedrag veroorzaken als de resources van de hoofdsjabloon zich niet in dezelfde regio bevinden als de resourcegroep.
Voorbeelden
In het volgende voorbeeld mislukt deze test. De parameter van de module m1
location
wordt geen expliciete waarde toegewezen, dus deze wordt standaard resourceGroup().location
ingesteld op , zoals opgegeven in module1.bicep. Maar het gebruik van de locatie van de resourcegroep is mogelijk niet het beoogde gedrag, omdat andere resources in main.bicep mogelijk op een andere locatie worden gemaakt dan de locatie van de resourcegroep.
main.bicep:
param location string = 'eastus'
module m1 'module1.bicep' = {
name: 'm1'
}
resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'storageaccount'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
module1.bicep:
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'stg'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
U kunt de fout oplossen door expliciet een waarde voor de eigenschap van location
de module door te geven:
main.bicep:
param location string = 'eastus'
module m1 'module1.bicep' = {
name: 'm1'
params: {
location: location // An explicit value will override the default value specified in module1.bicep
}
}
resource storageaccount 'Microsoft.Storage/storageAccounts@2024-03-01' = {
name: 'storageaccount'
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
Volgende stappen
Zie Bicep linter gebruiken voor meer informatie over de linter.