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 m1
nemá přiřazenou explicitní hodnotu, takže výchozí resourceGroup().location
hodnota 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@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'
}
}
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@2024-03-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.