Linter szabály – nincsenek rögzített helyek
Ez a szabály olyan Azure-helyértékeket keres, amelyek nincsenek paraméterezve.
Linter-szabály kódja
A bicep-konfigurációs fájlban a következő érték használatával szabhatja testre a szabálybeállításokat:
no-hardcoded-location
Megoldás
A sablonfelhasználók korlátozott hozzáféréssel rendelkezhetnek azokhoz a régiókhoz, ahol erőforrásokat hozhatnak létre. A rögzített erőforrás-hely megakadályozhatja, hogy a felhasználók létrehoznak egy erőforrást, így megakadályozhatják a sablon használatát. Az erőforráscsoport helyére alapértelmezett helyparaméter megadásával a felhasználók kényelmesen használhatják az alapértelmezett értéket, de más helyet is megadhatnak.
Ahelyett, hogy rögzített sztringet vagy változóértéket használnál, használjon paramétert, "globális" sztringet vagy kifejezést (de nem resourceGroup().location
deployment().location
, lásd : no-loc-expr-outside-params). Az ajánlott eljárás azt javasolja, hogy az erőforrások helyének beállításához a sablonnak rendelkeznie kell egy sztringparaméterrel.location
Ez a paraméter alapértelmezés szerint az erőforráscsoportra vagy az üzembe helyezési helyre (resourceGroup().location
vagy deployment().location
).
Az alábbi példa nem felel meg a tesztnek, mert az erőforrás tulajdonsága location
sztringkonstanst használ:
resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: 'westus'
}
Kijavíthatja egy új location
sztringparaméter létrehozásával (amely opcionálisan alapértelmezett értékkel rendelkezhet – resourceGroup(.location) gyakran használatos alapértelmezettként):
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: location
}
A Gyorsjavítás használatával hozzon létre egy helyparamétert, és cserélje le a sztringkonstanst a paraméternévre. Tekintse meg a következő képernyőképet:
Az alábbi példa azért nem felel meg a tesztnek, mert az erőforrás tulajdonsága location
egy sztringkonstanssal rendelkező változót használ.
var location = 'westus'
resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: location
}
Kijavíthatja a változó paraméterként való beállításával:
param location string = 'westus'
resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = {
location: location
}
Az alábbi példa nem felel meg a tesztnek, mert egy sztringkonstanst ad át egy modulparaméternek, amely viszont egy erőforrás tulajdonságához location
használatos:
module m1 'module1.bicep' = {
name: 'module1'
params: {
location: 'westus'
}
}
ahol a module1.bicep a következő:
param location string
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'storageaccount'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
A hiba kijavításához hozzon létre egy új paramétert az értékhez:
param location string // optionally with a default value
module m1 'module1.bicep' = {
name: 'module1'
params: {
location: location
}
}
Következő lépések
A linterről további információt a Bicep-linter használata című témakörben talál.