Regla de Linter: usar valores explícitos para los parámetros de ubicación del módulo
Esta regla busca los parámetros del módulo que se usan para las ubicaciones de recursos y podría devolver involuntariamente un valor inesperado como predeterminado.
Código de regla de linter
Use el valor siguiente del archivo de configuración de Bicep para personalizar los valores de regla:
explicit-values-for-loc-params
Soluciones
Cuando usa un módulo, es preciso asignar un valor explícito a cualquier parámetro relacionado con la ubicación que tenga un valor predeterminado. Los parámetros relacionados con la ubicación incluyen aquellos que tienen un valor predeterminado que hace referencia a resourceGroup().location
o deployment().location
y también cualquier parámetro al que se haga referencia desde la propiedad de ubicación de un recurso.
Un parámetro que se establece de forma predeterminada en la ubicación de un grupo de recursos o de una implementación es idóneo cuando se usa un archivo bicep como plantilla principal de implementación. Sin embargo, cuando se usa este valor predeterminado en un módulo, puede provocar un comportamiento inesperado si los recursos de la plantilla principal no se encuentran en la misma región que el grupo de recursos.
Ejemplos
En el ejemplo siguiente no se supera esta prueba. El parámetro location
del módulo m1
no tiene asignado un valor explícito, por lo que el valor predeterminado es resourceGroup().location
, tal como se especifica en module1.bicep. Pero usar ubicación del grupo de recursos podría no ser el comportamiento previsto, ya que otros recursos de main.bicep pueden crearse en una ubicación diferente de la ubicación del grupo de recursos.
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'
}
}
Para corregir el error, pase explícitamente un valor para la propiedad location
del módulo:
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'
}
}
Pasos siguientes
Para obtener más información acerca de linter, consulte Uso de linter de Bicep.