Sdílet prostřednictvím


Pravidlo Linter – použití explicitních hodnot pro parametry umístění modulu

Toto pravidlo vyhledá parametry modulu, které se používají pro umístění prostředků, a může neúmyslně použít neočekávanou hodnotu.

Kód pravidla Linteru

K přizpůsobení nastavení pravidel použijte v konfiguračním souboru Bicep následující hodnotu:

explicit-values-for-loc-params

Řešení

Při používání modulu by měly být přiřazeny explicitní hodnoty všechny parametry související s umístěním, které mají výchozí hodnotu. Parametry související s umístěním zahrnují parametry, které mají výchozí hodnotu odkazující resourceGroup().location na hodnotu nebo deployment().location také jakýkoli parametr odkazovaný z vlastnosti umístění prostředku.

Parametr, který se standardně používá jako umístění skupiny prostředků nebo nasazení, je vhodný, když se soubor bicep použije jako hlavní šablona nasazení. Pokud se ale v modulu použije taková výchozí hodnota, může to způsobit neočekávané chování, pokud se prostředky hlavní šablony nenacházejí ve stejné oblasti jako skupina prostředků.

Příklady

Následující příklad tento test selže. Parametr modulu m1nemá přiřazenou explicitní hodnotu, takže výchozí resourceGroup().locationhodnota je , jak je uvedeno v modulu1.bicep.location Použití umístění skupiny prostředků ale nemusí být zamýšlené chování, protože jiné prostředky v main.bicep se můžou vytvořit v jiném umístění než umístění skupiny prostředků.

main.bicep:

param location string = 'eastus'

module m1 'module1.bicep' = {
 name: 'm1'
}

resource storageaccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

module1.bicep:

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'stg'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Premium_LRS'
  }
}

Selhání můžete opravit explicitním předáním hodnoty vlastnosti modulu location :

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@2022-09-01' = {
  name: 'storageaccount'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Další kroky

Další informace o linteru naleznete v tématu Použití linter Bicep.