Compartir a través de


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.