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
, , apiVersion
dan name
.
Langkah berikutnya
- Untuk menyebarkan sumber daya secara kondisional, lihat Penyebaran bersyarat di templat ARM.
- Untuk mengatur dependensi sumber daya, lihat Menentukan urutan penyebaran sumber daya dalam templat ARM.