ARM şablonlarında kaynak bildirimi

Azure Resource Manager şablonu (ARM şablonu) aracılığıyla bir kaynak dağıtmak için bir kaynak bildirimi eklersiniz. Diziyi resources bir JSON şablonunda kullanın.

languageVersion 2.0 , ARM JSON şablonlarında bir diziden nesneye kaynak bildirimini değiştirme gibi iyileştirmelerin listesini oluşturur. Bu makalede gösterilen örneklerin çoğu diziyi kullanmaya resources devam eder. languageVersion 2.0'a özgü bilgiler için bkz . Sembolik ad kullanma.

Not

Visual Studio Code için Azure Resource Manager Araçları uzantısının geçerli sürümü languageVersion 2.0'da yapılan iyileştirmeleri tanımıyor.

İpucu

ARM şablonlarıyla aynı özellikleri sunduğundan ve söz diziminin kullanımı daha kolay olduğundan Bicep'i öneririz. Daha fazla bilgi için bkz . kaynak bildirimi.

Şablonda 800 kaynakla sınırlısınız. Daha fazla bilgi için bkz . Şablon sınırları.

Kaynak türünü ve sürümünü ayarlama

Şablonunuza kaynak eklerken, kaynak türünü ve API sürümünü ayarlayarak başlayın. Bu değerler, kaynak için kullanılabilen diğer özellikleri belirler.

Aşağıdaki örnekte bir depolama hesabı için kaynak türü ve API sürümünün nasıl ayarlanacağı gösterilmektedir. Örnekte kaynak bildiriminin tamamı gösterilmiyor.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    ...
  }
]

Kaynak adını ayarlama

Her kaynağın bir adı vardır. Kaynak adını ayarlarken, kaynak adlarının kurallarına ve kısıtlamalarına dikkat edin.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccountName')]",
    ...
  }
]

Konum ayarlama

Birçok kaynak bir konum gerektirir. IntelliSense veya şablon başvurusu aracılığıyla kaynağın bir konuma ihtiyacı olup olmadığını belirleyebilirsiniz. Aşağıdaki örnek, depolama hesabı için kullanılan bir konum parametresi ekler.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-06-01",
    "name": "[parameters('storageAccountName')]",
    "location": "[parameters('location')]",
    ...
  }
]

Daha fazla bilgi için bkz . ARM şablonunda kaynak konumunu ayarlama.

Etiketleri ayarlama

Dağıtım sırasında bir kaynağa etiket uygulayabilirsiniz. Etiketler, dağıtılan kaynaklarınızı mantıksal olarak düzenlemenize yardımcı olur. Etiketleri belirtebileceğiniz farklı yöntemlere ilişkin örnekler için bkz . ARM şablonu etiketleri.

Kaynağa özgü özellikleri ayarlama

Yukarıdaki özellikler çoğu kaynak türü için geneldir. Bu değerleri ayarladıktan sonra, dağıttığınız kaynak türüne özgü özellikleri ayarlamanız gerekir.

Hangi özelliklerin kullanılabilir olduğunu ve hangilerinin gerekli olduğunu belirlemek için intellisense veya şablon başvurusu kullanın. Aşağıdaki örnek, depolama hesabının kalan özelliklerini ayarlar.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    }
  ]
}

Sembolik ad kullan

Bicep'te her kaynak tanımının sembolik adı vardır. Sembolik ad, Bicep dosyanızın diğer bölümlerindeki kaynağa başvurmak için kullanılır. ARM JSON şablonlarında sembolik adı desteklemek için sürümüyle 2.0ekleyin languageVersion ve kaynak tanımını bir diziden nesneye değiştirin. Bir şablon için belirtildiğinde languageVersion , kök düzeyi kaynaklar için sembolik ad belirtilmelidir. Örneğin:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  ]
}

Yukarıdaki JSON aşağıdaki JSON'a yazılabilir:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "aks": {
      "type": "Microsoft.ContainerService/managedClusters",
      ...
    }
  }
}

Sembolik adlar büyük/küçük harfe duyarlıdır. Sembolik adlar için izin verilen karakterler harf, sayı ve _ şeklindedir. Sembolik adların şablonda benzersiz olması gerekir, ancak şablondaki değişken adları, parametre adları ve çıkış adlarıyla çakışabilir. Aşağıdaki örnekte, depolama hesabı kaynağının sembolik adı çıktıyla aynı ada sahiptir.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": {
    "myStorage": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "properties": {}
    }
  },
  "outputs": {
    "myStorage":{
      "type": "object",
      "value": "[reference('myStorage')]"
    }
  }
}

Başvuru işlevi, önceki örnekte gösterildiği gibi kaynağın sembolik adını kullanabilir. Başvuru işlevi artık bir kaynağın adını kullanamaz, örneğin, reference(parameters('storageAccountName')) buna izin verilmez.

Dağıtımlar kaynağı sembolik ad dağıtımında kullanılıyorsa apiVersion 2020-09-01 veya sonraki bir sürümü kullanın.

Mevcut kaynakları bildirme

Kaynak bildirimi için sembolik ad kullanarak languageVersion 2.0 ve kullanarak mevcut kaynakları bildirebilirsiniz. en üst düzey kaynak özelliği "existing": true , aşağıdaki örnekte gösterildiği gibi bir kaynağı dağıtmak yerine ARM'nin okumasına neden olur:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "languageVersion": "2.0",

  "resources": {
    "storageAccount": {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "storageacct",
      "existing": true
    }
  },
  "outputs": {
    "saBlocksPlaintext": {
      "type": "bool",
      "value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
    }
  }
}

Mevcut kaynakların , apiVersionve namedışında typeherhangi bir özellik tanımlaması gerekmez.

Sonraki adımlar

  • Bir kaynağı koşullu olarak dağıtmak için bkz . ARM şablonlarında koşullu dağıtım.
  • Kaynak bağımlılıklarını ayarlamak için bkz . ARM şablonlarında kaynakları dağıtma sırasını tanımlama.