Deklarasi sumber daya dalam templat ARM

Untuk menyebarkan sumber daya melalui templat Azure Resource Manager (templat ARM), Anda menambahkan deklarasi sumber daya. Menggunakan array resources dalam templat JSON.

languageVersion 2.0 membuat daftar penyempurnaan templat ARM JSON, seperti mengubah deklarasi sumber daya dari array ke objek. Sebagian besar sampel yang diperlihatkan dalam artikel ini masih menggunakan resources array. Untuk informasi spesifik languageVersion 2.0, lihat Menggunakan nama simbolis.

Catatan

Rilis ekstensi Alat Azure Resource Manager saat ini untuk Visual Studio Code tidak mengenali penyempurnaan yang dibuat dalam languageVersion 2.0.

Tip

Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari lebih lanjut, lihat deklarasi sumber daya.

Anda dibatasi hingga 800 sumber daya dalam templat. Untuk informasi selengkapnya, lihat Batas templat.

Mengatur tipe dan versi sumber daya

Saat menambahkan resource ke template Anda, mulailah dengan mengatur jenis resource dan versi API. Nilai-nilai ini menentukan properti lain yang tersedia untuk sumber daya.

Contoh berikut menunjukkan cara mengatur jenis resource dan versi API untuk akun penyimpanan. Contohnya tidak menampilkan deklarasi sumber daya lengkap.

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

Atur nama sumber daya

Setiap sumber daya memiliki nama. Saat mengatur nama sumber daya, perhatikan aturan dan batasan untuk nama sumber daya.

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

Atur lokasi

Banyak sumber daya membutuhkan lokasi. Anda dapat menentukan apakah sumber daya memerlukan lokasi baik melalui intellisense atau referensi template. Contoh berikut menambahkan parameter lokasi yang digunakan untuk akun penyimpanan.

"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')]",
    ...
  }
]

Untuk informasi selengkapnya, lihat Mengatur lokasi sumber daya di templat ARM.

Mengatur tag

Gunakan untuk menerapkan tag ke sumber daya selama penyebaran. Tag membantu Anda menata sumber daya secara logis. Untuk contoh berbagai cara Anda dapat menentukan tag, lihat tag templat ARM.

Mengatur properti spesifik sumber daya

Properti sebelumnya umum untuk sebagian besar jenis sumber daya. Setelah mengatur nilai tersebut, Anda perlu mengatur properti yang spesifik untuk tipe sumber daya yang Anda sebarkan.

Gunakan referensi intellisense atau template untuk menentukan properti mana yang tersedia dan mana yang diperlukan. Contoh berikut menetapkan properti yang tersisa untuk akun penyimpanan.

{
  "$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"
      }
    }
  ]
}

Gunakan nama simbolis

Di Bicep, setiap definisi sumber daya memiliki nama simbolis. Nama simbolis digunakan untuk mereferensikan sumber daya dari bagian lain dari file Bicep Anda. Untuk mendukung nama simbolis dalam templat ARM JSON, tambahkan languageVersion dengan versi 2.0, dan ubah definisi sumber daya dari array ke objek. Ketika languageVersion ditentukan untuk templat, nama simbolis harus ditentukan untuk sumber daya tingkat akar. Contohnya:

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

JSON sebelumnya dapat ditulis ke dalam JSON berikut:

{
  "$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",
      ...
    }
  }
}

Nama simbolis peka huruf besar/kecil. Karakter yang diperbolehkan untuk nama simbolis adalah huruf, angka, dan _. Nama simbolis harus unik dalam templat, tetapi dapat tumpang tindih dengan nama variabel, nama parameter, dan nama output dalam templat. Dalam contoh berikut, nama simbolis sumber daya akun penyimpanan memiliki nama yang sama dengan output.

{
  "$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')]"
    }
  }
}

Fungsi referensi dapat menggunakan nama simbolis sumber daya, seperti yang ditunjukkan dalam contoh sebelumnya. Fungsi referensi tidak dapat lagi menggunakan nama sumber daya, misalnya, reference(parameters('storageAccountName')) tidak diizinkan.

Jika sumber daya Penyebaran digunakan dalam penyebaran nama simbolis, gunakan apiVersion 2020-09-01 atau yang lebih baru.

Mendeklarasikan sumber daya yang ada

Dengan languageVersion 2.0 dan menggunakan nama simbolis untuk deklarasi sumber daya, Anda dapat mendeklarasikan sumber daya yang ada. Properti "existing": true sumber daya tingkat atas menyebabkan ARM membaca daripada menyebarkan sumber daya seperti yang ditunjukkan dalam contoh berikut:

{
  "$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]"
    }
  }
}

Sumber daya yang ada tidak perlu menentukan properti apa pun selain type, , apiVersiondan name.

Langkah berikutnya