Bagikan melalui


Deklarasi sumber daya dalam templat ARM

Untuk menyebarkan sumber daya melalui templat Azure Resource Manager (templat ARM), Anda menambahkan deklarasi sumber daya. Gunakan 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.

Nota

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

Petunjuk / Saran

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

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

Mengatur jenis dan versi sumber daya

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

Contoh berikut menunjukkan cara mengatur jenis sumber daya dan versi API untuk akun penyimpanan. Contoh 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 yang memerlukan lokasi. Anda dapat menentukan apakah sumber daya membutuhkan lokasi baik melalui intellisense atau referensi templat. 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.

Menyusun tanda

Anda dapat menerapkan tag ke sumber daya selama penyebaran. Tag membantu Anda mengatur sumber daya yang disebarkan secara logis. Untuk contoh berbagai cara Anda dapat menentukan tag, lihat tag templat ARM.

Mengatur properti khusus sumber daya

Properti-properti yang telah disebutkan sebelumnya adalah bersifat umum bagi sebagian besar jenis sumber daya. Setelah mengatur nilai tersebut, Anda perlu mengatur properti yang khusus untuk jenis sumber daya yang Anda sebarkan.

Gunakan referensi intellisense atau templat 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 merujuk sumber daya dari bagian lain dalam 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 bersifat case-sensitive. 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 selanjutnya