Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menentukan dan menggunakan variabel di templat Azure Resource Manager (templat ARM) Anda. Anda menggunakan variabel untuk menyederhanakan templat Anda. Daripada mengulangi ekspresi rumit di seluruh templat, Anda menentukan variabel yang berisi ekspresi rumit. Kemudian, Anda menggunakan variabel tersebut sesuai kebutuhan di seluruh templat Anda.
Resource Manager menyelesaikan variabel sebelum memulai operasi penyebaran. Di mana pun variabel digunakan dalam templat, Resource Manager menggantinya dengan nilai yang sudah ditentukan.
Petunjuk / Saran
Bicep direkomendasikan karena menawarkan kemampuan yang sama dengan templat ARM, dan sintaksnya lebih mudah digunakan. Untuk mempelajari lebih lanjut, lihat variabel.
Anda dibatasi hingga 256 variabel dalam templat. Untuk informasi selengkapnya, lihat batas templat.
Tentukan variabel
Saat menentukan variabel, Anda tidak menentukan jenis data untuk variabel tersebut. Sebagai gantinya, berikan nilai atau ekspresi templat. Jenis variabel disimpulkan dari nilai yang diselesaikan. Contoh berikut mengatur variabel ke string:
"variables": {
"stringVar": "example value"
},
Untuk membuat variabel, gunakan nilai dari parameter atau variabel lain:
"parameters": {
"inputValue": {
"defaultValue": "deployment parameter",
"type": "string"
}
},
"variables": {
"stringVar": "myVariable",
"concatToVar": "[concat(variables('stringVar'), '-addtovar') ]",
"concatToParam": "[concat(parameters('inputValue'), '-addtoparam')]"
}
Anda dapat menggunakan template fungsi untuk membangun nilai variabel.
Contoh berikut membuat nilai string untuk nama akun penyimpanan. Ini menggunakan beberapa template fungsi untuk mendapatkan nilai parameter dan menggabungkannya ke string unik:
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
Anda tidak dapat menggunakan reference fungsi atau fungsi apa pun list dalam deklarasi variabel. Fungsi-fungsi ini mendapatkan status runtime sumber daya dan tidak dapat dijalankan sebelum penyebaran ketika variabel diselesaikan.
Gunakan variabel
Contoh berikut menunjukkan cara menggunakan variabel untuk properti sumber daya.
Untuk mereferensikan nilai untuk variabel, gunakan variables fungsi :
"variables": {
"storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageName')]",
...
}
]
Contoh templat
Templat berikut ini tidak menyebarkan sumber daya apa pun. Ini menunjukkan beberapa cara untuk mendeklarasikan berbagai jenis variabel:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"inputValue": {
"defaultValue": "deployment parameter",
"type": "string"
}
},
"variables": {
"stringVar": "myVariable",
"concatToVar": "[concat(variables('stringVar'), '-addtovar') ]",
"concatToParam": "[concat(parameters('inputValue'), '-addtoparam')]",
"arrayVar": [
1,
2,
3,
4
],
"objectVar": {
"property1": "value1",
"property2": "value2"
},
"copyWithinVar": {
"copy": [
{
"name": "disks",
"count": 5,
"input": {
"name": "[concat('myDataDisk', copyIndex('disks', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('disks')]"
}
},
{
"name": "diskNames",
"count": 5,
"input": "[concat('myDataDisk', copyIndex('diskNames', 1))]"
}
]
},
"copy": [
{
"name": "topLevelCopy1",
"count": 5,
"input": {
"name": "[concat('oneDataDisk', copyIndex('topLevelCopy1', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('topLevelCopy1')]"
}
},
{
"name": "topLevelCopy2",
"count": 3,
"input": {
"name": "[concat('twoDataDisk', copyIndex('topLevelCopy2', 1))]",
"diskSizeGB": "1",
"diskIndex": "[copyIndex('topLevelCopy2')]"
}
},
{
"name": "topLevelCopy3",
"count": 4,
"input": "[concat('stringValue', copyIndex('topLevelCopy3'))]"
},
{
"name": "topLevelCopy4",
"count": 4,
"input": "[copyIndex('topLevelCopy4')]"
}
]
},
"resources": [],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[variables('stringVar')]"
},
"concatToVariableOutput": {
"type": "string",
"value": "[variables('concatToVar')]"
},
"concatToParameterOutput": {
"type": "string",
"value": "[variables('concatToParam')]"
},
"arrayOutput": {
"type": "array",
"value": "[variables('arrayVar')]"
},
"arrayElementOutput": {
"type": "int",
"value": "[variables('arrayVar')[0]]"
},
"objectOutput": {
"type": "object",
"value": "[variables('objectVar')]"
},
"copyWithinVariableOutput": {
"type": "object",
"value": "[variables('copyWithinVar')]"
},
"topLevelCopyOutput1": {
"type": "array",
"value": "[variables('topLevelCopy1')]"
},
"topLevelCopyOutput2": {
"type": "array",
"value": "[variables('topLevelCopy2')]"
},
"topLevelCopyOutput3": {
"type": "array",
"value": "[variables('topLevelCopy3')]"
},
"topLevelCopyOutput4": {
"type": "array",
"value": "[variables('topLevelCopy4')]"
}
}
}
Variabel konfigurasi
Anda dapat menentukan variabel yang menyimpan nilai terkait untuk mengonfigurasi lingkungan. Anda menentukan variabel sebagai objek dengan nilai . Contoh berikut menunjukkan objek yang menyimpan nilai untuk dua lingkungan - uji dan prod. Berikan salah satu nilai ini selama penyebaran:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"environmentName": {
"type": "string",
"allowedValues": [
"test",
"prod"
],
"metadata": {
"description": "Specify either test or prod for configuration values."
}
}
},
"variables": {
"environmentSettings": {
"test": {
"instanceSize": "Small",
"instanceCount": 1
},
"prod": {
"instanceSize": "Large",
"instanceCount": 4
}
}
},
"resources": [],
"outputs": {
"instanceSize": {
"value": "[variables('environmentSettings')[parameters('environmentName')].instanceSize]",
"type": "string"
},
"instanceCount": {
"value": "[variables('environmentSettings')[parameters('environmentName')].instanceCount]",
"type": "int"
}
}
}
Langkah selanjutnya
- Untuk mempelajari selengkapnya tentang properti yang tersedia untuk variabel, lihat struktur dan sintaks templat ARM.
- Untuk rekomendasi tentang membuat variabel, lihat praktik terbaik - variabel.
- Untuk contoh templat yang menetapkan aturan keamanan ke grup keamanan jaringan, lihat aturan keamanan jaringan dan file parameter.