Delen via


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 m1location wordt geen expliciete waarde toegewezen, dus deze wordt standaard resourceGroup().locationingesteld 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.