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
m1
non viene assegnato a un valore esplicito, quindi per impostazione predefinita viene resourceGroup().location
impostato 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.