Output dalam ARM templat
Artikel ini menjelaskan cara menentukan nilai output dalam templat Azure Resource Manager (templat ARM). Anda menggunakan output saat Anda perlu menampilkan nilai dari sumber daya yang disebarkan.
Format setiap nilai output harus sesuai dengan salah satu jenis data.
Tip
Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari selengkapnya, lihat output.
Anda dibatasi hingga 64 output dalam templat. Untuk informasi selengkapnya, lihat Batas templat.
Menentukan nilai output
Contoh berikut menunjukkan cara menampilkan 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 elemen condition
untuk mengembalikan nilai secara kondisional. Biasanya, Anda menggunakan output kondisional saat Anda menyebarkan secara kondisional sebuah sumber daya. Contoh berikut menunjukkan cara menampilkan ID sumber daya secara kondisional untuk alamat IP publik berdasarkan apakah ID sumber daya yang baru sudah disebarkan:
"outputs": {
"resourceID": {
"condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
"type": "string",
"value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
}
}
Untuk contoh sederhana output kondisional, lihat templat output kondisional.
Jumlah output dinamis
Dalam beberapa skenario, Anda tidak tahu jumlah instans nilai yang perlu Anda tampilkan saat membuat templat. Anda dapat menampilkan jumlah nilai variabel dengan menggunakan output iteratif. Tambahkan elemen copy
untuk 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 yang ditautkan. Untuk mengambil nilai output dari templat yang ditautkan, gunakan fungsi referensi di templat induk. Sintaks dalam templat induk adalah:
"[reference('<deploymentName>').outputs.<propertyName>.value]"
Contoh berikut menunjukkan cara mengatur alamat IP pada penyeimbang muatan dengan mengambil nilai dari templat yang ditautkan.
"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 reference
fungsi di bagian output dari templat bertingkat. Untuk menampilkan nilai untuk sumber daya yang disebarkan dalam templat bertingkat, konversi templat bertingkat menjadi templat yang ditautkan.
Templat alamat IP Publik membuat alamat IP publik dan menghasilkan ID sumber daya. Templat penyeimbang muatan tertaut ke templat sebelumnya. Ia menggunakan ID sumber daya dalam output saat membuat penyeimbang muatan.
Contoh templat
Templat berikut tidak menyebarkan sumber daya apa pun. Ia menunjukkan beberapa cara menampilkan berbagai jenis output.
{
"$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()]"
}
}
}
Mendapatkan nilai output
Saat penyebaran berhasil, nilai output akan ditampilkan secara otomatis 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 berikutnya
- Untuk mempelajari tentang properti yang tersedia untuk output, lihat Memahami struktur dan sintaks templat ARM.