Linter kuralı - dağıtım kaynağı yok
Bu linter kuralı, şablon kök düzeyinde bir kaynak içerdiğinde bir Microsoft.Resources/deployments
uyarı gönderir.
Linter kural kodu
Kural ayarlarını özelleştirmek için Bicep yapılandırma dosyasında aşağıdaki değeri kullanın:
no-deployments-resources
Çözüm
ARM şablonlarında, kaynağı kullanarak Microsoft.Resources/deployments
şablonları iç içe yerleştirerek veya bağlayarak şablonu yeniden kullanabilir veya modülerleştirebilirsiniz. Daha fazla bilgi için bkz . Azure kaynaklarını dağıtırken bağlantılı ve iç içe yerleştirilmiş şablonları kullanma Aşağıdaki ARM şablonu iç içe bir şablon örneğidir:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('{0}{1}', 'store', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2024-03-01",
"name": "nestedTemplate1",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
]
}
}
}
]
}
Bicep'te arm şablonlarını Microsoft.Resources/deployments
iç içe yerleştirme veya dış ARM şablonlarını bağlama için kaynağı kullanmaya devam edebilirsiniz. Ancak, bu harika bir fikir değildir çünkü birden çok kez değerlendirilme şekli nedeniyle güvenli olmayan ve karmaşık davranışlara yol açabilir. Ayrıca, Bicep dosyasını yazarken Visual Studio Code'da neredeyse hiç doğrulama ve kendi kendine tamamlama işlemi yoktur ve bu da çalışmayı zorlaştırıyor. Şablon kök düzeyinde kaynak içerdiğinden Microsoft.Resources/deployments
aşağıdaki Bicep dosyası bu testte başarısız oluyor.
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location
resource nestedTemplate1 'Microsoft.Resources/deployments@2024-03-01' = {
name: 'nestedTemplate1'
properties:{
mode: 'Incremental'
template: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
contentVersion: '1.0.0.0'
resources: [
{
type: 'Microsoft.Storage/storageAccounts'
apiVersion: '2023-04-01'
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
]
}
}
}
Sorunu düzeltmek için Bicep CLI kod çözme komutunu kullanabilirsiniz. Örneğin, önceki ARM şablonu aşağıdaki Bicep dosyalarına dönüştürülebilir:
main.bicep:
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location
module nestedTemplate1 './nested_nestedTemplate1.bicep' = {
name: 'nestedTemplate1'
params: {
storageAccountName: storageAccountName
location: location
}
}
nested_nestedTemplate1.bicep:
param storageAccountName string
param location string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
Ayrıca modül deyimini kullanarak ARM şablonlarına da başvurabilirsiniz.
main.bicep:
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location
module nestedTemplate1 './createStorage.json' = {
name: 'nestedTemplate1'
params: {
storageAccountName: storageAccountName
location: location
}
}
createStorage.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('{0}{1}', 'store', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
]
}
Sonraki adımlar
Lint hakkında daha fazla bilgi için bkz . Bicep linter'i kullanma.