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 nilai output di templat Azure Resource Manager (templat ARM) Anda. Anda menggunakan output saat Anda perlu mengembalikan nilai dari sumber daya yang disebarkan.
Format setiap nilai output harus diselesaikan ke salah satu jenis data.
Petunjuk / Saran
Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari selengkapnya, lihat hasil.
Anda dibatasi hingga 64 output dalam templat. Untuk informasi selengkapnya, lihat Batas templat.
Tentukan nilai output
Contoh berikut menunjukkan cara mengembalikan properti dari sumber daya yang disebarkan.
Tambahkan bagian outputs
ke templat. Nilai output mendapatkan nama domain yang sepenuhnya memenuhi syarat untuk alamat IP publik.
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))).dnsSettings.fqdn]"
},
}
Jika Anda perlu mengeluarkan properti yang memiliki tanda hubung dalam nama, gunakan tanda kurung di sekitar nama, bukan notasi titik. Misalnya, gunakan ['property-name']
, bukan .property-name
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"user": {
"user-name": "Test Person"
}
},
"resources": [
],
"outputs": {
"nameResult": {
"type": "string",
"value": "[variables('user')['user-name']]"
}
}
}
Output kondisional
Anda dapat menggunakan condition
elemen untuk mengembalikan nilai secara kondisional. Biasanya, Anda menggunakan output kondisional saat Anda menyebarkan secara kondisional sebuah sumber daya. Contoh berikut menunjukkan cara mengembalikan ID sumber daya secara kondisional untuk alamat IP publik berdasarkan apakah yang baru disebarkan:
"outputs": {
"resourceID": {
"condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
"type": "string",
"value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
}
}
Untuk contoh sederhana keluaran kondisional, lihat template keluaran bersyarat.
Jumlah output dinamis
Dalam beberapa skenario, Anda tidak tahu jumlah instans nilai yang perlu Anda kembalikan saat membuat templat. Anda dapat mengembalikan jumlah variabel nilai dengan menggunakan output berulang.
copy
Tambahkan elemen untuk melakukan iterasi output.
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(concat(copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
Untuk informasi selengkapnya, lihat Perulangan output di dalam templat ARM.
Templat yang ditautkan
Anda dapat menyebarkan templat terkait dengan menggunakan templat tertaut. Untuk mengambil nilai output dari templat tertaut, gunakan fungsi referensi di templat induk. Sintaks dalam templat induk adalah:
"[reference('<deploymentName>').outputs.<propertyName>.value]"
Contoh berikut menunjukkan cara mengatur alamat IP pada load balancer dengan mengambil nilai dari templat tertaut.
"publicIPAddress": {
"id": "[reference('linkedTemplate').outputs.resourceID.value]"
}
Jika nama properti memiliki tanda hubung, gunakan tanda kurung siku di sekitar nama, bukan notasi titik.
"publicIPAddress": {
"id": "[reference('linkedTemplate').outputs['resource-ID'].value]"
}
Anda tidak dapat menggunakan fungsi reference
di bagian keluaran dari templat berlapis. Untuk mengembalikan nilai untuk sumber daya yang disebarkan dalam templat berlapis, konversikan templat berlapis Anda ke templat tertaut.
Templat alamat IP Publik membuat alamat IP publik dan menghasilkan ID sumber daya. Templat Load balancer menautkan ke templat sebelumnya. Ini menggunakan ID sumber daya dalam output saat membuat load balancer.
Contoh templat
Templat berikut ini tidak menyebarkan sumber daya apa pun. Ini menunjukkan beberapa cara mengembalikan output dari berbagai jenis.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"stringOutput": {
"type": "string",
"value": "[deployment().name]"
},
"integerOutput": {
"type": "int",
"value": "[length(environment().authentication.audiences)]"
},
"booleanOutput": {
"type": "bool",
"value": "[contains(deployment().name, 'demo')]"
},
"arrayOutput": {
"type": "array",
"value": "[environment().authentication.audiences]"
},
"objectOutput": {
"type": "object",
"value": "[subscription()]"
}
}
}
Dapatkan nilai output
Ketika penyebaran berhasil, nilai output secara otomatis dikembalikan dalam hasil penyebaran.
Untuk mendapatkan nilai output dari riwayat penyebaran, Anda dapat menggunakan skrip.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Pengurutan objek dalam output
Di JSON, objek adalah kumpulan pasangan kunci/nilai nol atau lebih yang tidak diurutkan. Pengurutan dapat berbeda bergantung pada implementasinya. Misalnya, fungsi item() Bicep mengurutkan objek dalam urutan abjad. Di tempat lain, pengurutan asli dapat dipertahankan. Karena non-determinisme ini, hindari membuat asumsi tentang pengurutan kunci objek saat menulis kode, yang berinteraksi dengan parameter penyebaran &output.
Langkah selanjutnya
- Untuk mempelajari tentang properti yang tersedia untuk output, lihat Memahami struktur dan sintaks templat ARM.