Condividi tramite


Regola Linter: usare valori espliciti per i parametri di posizione del modulo

Questa regola trova i parametri del modulo usati per le posizioni delle risorse e può inavvertitamente impostare come predefinito un valore imprevisto.

Codice della regola Linter

Usa il valore seguente nel file di configurazione Bicep per personalizzare le impostazioni delle regole:

explicit-values-for-loc-params

Soluzione

Quando si utilizza un modulo, deve essere assegnato un valore esplicito ai parametri correlati alla posizione che hanno un valore predefinito. I parametri correlati alla posizione includono parametri che hanno un valore predefinito che fa riferimento a resourceGroup().location o a deployment().location, e anche qualsiasi parametro a cui viene fatto riferimento dalla proprietà posizione di una risorsa.

Un parametro con impostazione predefinita per un gruppo di risorse o per una posizione di distribuzione si rivela utile nei casi in cui un file bicep viene usato come modello di distribuzione principale. Tuttavia, se un valore predefinito di questo tipo viene usato in un modulo, se le risorse del modello principale non si trovano nella stessa area del gruppo di risorse, si può verificare un comportamento imprevisto.

Esempi

L'esempio seguente ha esito negativo per questo test. Il parametro del modulo location m1non viene assegnato a un valore esplicito, quindi per impostazione predefinita viene resourceGroup().locationimpostato su , come specificato in module1.bicep. Tuttavia, l'uso della posizione del gruppo di risorse potrebbe non essere il comportamento previsto, poiché altre risorse in main.bicep potrebbero essere create in una posizione diversa rispetto alla posizione del gruppo di risorse.

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'
  }
}

È possibile correggere l'errore passando in modo esplicito un valore per la proprietà location del modulo:

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'
  }
}

Passaggi successivi

Per altre informazioni su linter, vedi Usare linter di Bicep.