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.
Terkadang Anda perlu menyebarkan sumber daya secara opsional dalam templat Azure Resource Manager (templat ARM).
condition Gunakan elemen untuk menentukan apakah sumber daya disebarkan. Nilai untuk kondisi diselesaikan ke true atau false. Ketika nilainya benar, sumber daya dibuat. Ketika nilainya salah, sumber daya tidak dibuat. Nilai hanya dapat diterapkan ke seluruh sumber daya.
Nota
Penyebaran bersyarat tidak diterapkan ke sumber daya anak. Jika Anda ingin menyebarkan sumber daya utama dan sumber daya anak secara kondisional, Anda harus menerapkan kondisi yang sama pada setiap jenis sumber daya.
Tip
Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari lebih lanjut, lihat penyebaran bersyarah.
Kondisi penyebaran
Anda dapat meneruskan nilai parameter yang menunjukkan apakah sumber daya dipasang. Contoh berikut secara kondisional menyebarkan zona DNS.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"deployZone": {
"type": "bool",
"defaultValue": true
}
},
"functions": [],
"resources": [
{
"condition": "[parameters('deployZone')]",
"type": "Microsoft.Network/dnsZones",
"apiVersion": "2023-07-01-preview",
"name": "myZone",
"location": "global",
"properties": {
"zoneType": "Public"
}
}
]
}
Untuk contoh yang lebih kompleks, lihat Server logis Azure SQL.
Sumber daya baru atau yang sudah ada
Anda dapat menggunakan penyebaran kondisional untuk membuat sumber daya baru atau menggunakan sumber daya yang sudah ada. Contoh berikut menunjukkan cara menyebarkan akun penyimpanan baru atau menggunakan akun penyimpanan yang sudah ada.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"newOrExisting": {
"type": "string",
"defaultValue": "new",
"allowedValues": [
"new",
"existing"
]
}
},
"resources": [
{
"condition": "[equals(parameters('newOrExisting'), 'new')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
{
"condition": "[equals(parameters('newOrExisting'), 'existing')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]"
}
],
"outputs": {
"storageAccountId": {
"type": "string",
"value": "[if(equals(parameters('newOrExisting'), 'new'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]"
}
}
}
Ketika parameter newOrExisting diatur ke baru, kondisi bernilai benar. Akun penyimpanan telah diterapkan. Jika tidak, akun penyimpanan yang ada digunakan.
Untuk contoh lengkap templat yang menggunakan condition elemen , lihat VM dengan Jaringan Virtual, Penyimpanan, dan IP Publik baru atau yang sudah ada.
Fungsi runtime
Jika Anda menggunakan fungsi referensi atau daftar dengan sumber daya yang disebarkan secara kondisional, fungsi dievaluasi meskipun sumber daya tidak disebarkan. Anda mendapatkan kesalahan jika fungsi mengacu pada sumber daya yang tidak ada.
Gunakan fungsi if untuk memastikan fungsi hanya dievaluasi untuk kondisi saat sumber daya disebarkan. Lihat fungsi if untuk templat sampel yang menggunakan if dan reference dengan sumber daya yang disebarkan secara kondisional.
Anda menetapkan sumber daya sebagai dependen pada sumber daya bersyarah persis seperti yang Anda lakukan pada sumber daya lainnya. Saat sumber daya bersyarat tidak disebarkan, Azure Resource Manager secara otomatis menghapusnya dari dependensi yang diperlukan.
Mode lengkap
Jika Anda menyebarkan templat dengan mode lengkap dan sumber daya tidak disebarkan karena condition dievaluasi menjadi false, hasilnya bergantung pada versi REST API yang Anda gunakan untuk menyebarkan templat. Jika Anda menggunakan versi yang lebih lama dari 2019-05-10, sumber daya tidak dihapus. Sejak 2019-05-10 atau setelahnya, sumber daya dihapus. Versi terbaru Azure PowerShell dan Azure CLI menghapus sumber daya saat kondisi salah.
Langkah selanjutnya
- Untuk modul Learn yang mencakup penyebaran kondisi, lihat Mengelola penyebaran cloud yang kompleks dengan menggunakan fitur templat ARM tingkat lanjut.
- Untuk rekomendasi tentang membuat templat, lihat praktik terbaik templat ARM.
- Untuk membuat beberapa instans sumber daya, lihat Iterasi Sumber Daya pada Templat ARM.