Mengembangkan templat untuk Azure Stack Hub dengan Azure Resource Manager
Saat Anda mengembangkan aplikasi, penting untuk memiliki portabilitas templat antara Azure dan Azure Stack Hub. Artikel ini memberikan pertimbangan untuk mengembangkan templat Azure Resource Manager. Dengan templat ini, Anda dapat membuat prototipe aplikasi dan menguji penyebaran di Azure tanpa akses ke lingkungan Azure Stack Hub.
Ketersediaan penyedia sumber daya
Templat yang Anda rencanakan untuk disebarkan hanya boleh menggunakan layanan Microsoft Azure yang sudah tersedia, atau dalam pratinjau, di Azure Stack Hub.
Ruang nama publik
Karena Azure Stack Hub dihosting di pusat data Anda, ia memiliki ruang nama titik akhir layanan yang berbeda dari cloud publik Azure. Akibatnya, titik akhir publik berkode keras di templat Azure Resource Manager gagal saat Anda mencoba menyebarkan ke Azure Stack Hub. Anda dapat secara dinamis membangun titik akhir layanan menggunakan reference
dan concatenate
fungsi untuk mengambil nilai dari penyedia sumber daya selama penyebaran. Misalnya, alih-alih melakukan hard-coding blob.core.windows.net
di templat Anda, ambil primaryEndpoints.blob untuk menyetel endpoint osDisk.URI secara dinamis:
"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
'/',variables('OSDiskName'),'.vhd')]"}}
Penerapan versi API
Versi layanan Azure mungkin berbeda antara Azure dan Azure Stack Hub. Setiap sumber daya memerlukan atribut apiVersion, yang mendefinisikan kemampuan yang ditawarkan. Untuk memastikan kompatibilitas versi API di Azure Stack Hub, versi API berikut berlaku untuk setiap penyedia sumber daya:
Penyedia Sumber Daya | apiVersion |
---|---|
Compute | 2015-06-15 |
Jaringan | 2015-06-15, 2015-05-01-pratinjau |
Penyimpanan | 01-01-2016, 15-06-2015, -01-05-2015-pratinjau |
Az.KeyVault | 2015-06-01 |
App Service | 2015-08-01 |
Fungsi templat
Fungsi Azure Resource Manager menyediakan kemampuan yang diperlukan untuk membuat templat dinamis. Misalnya, Anda dapat menggunakan fungsi untuk tugas-tugas seperti:
- Menggabungkan atau memangkas string.
- Referensi nilai dari sumber daya lain.
- Iterasi pada sumber daya untuk menyebarkan beberapa instans.
Fungsi-fungsi ini tidak tersedia di Azure Stack Hub:
- Lewati
- Ambil
Lokasi sumber daya
Templat Azure Resource Manager menggunakan atribut location
untuk menempatkan sumber daya selama penyebaran. Di Azure, lokasi merujuk ke wilayah seperti AS Barat atau Amerika Selatan. Di Azure Stack Hub, lokasi berbeda karena Azure Stack Hub ada di pusat data Anda. Untuk memastikan templat dapat dipindah tangankan antara Azure dan Azure Stack Hub, Anda harus mereferensikan lokasi grup sumber daya saat Anda menyebarkan sumber daya individual. Anda dapat melakukannya menggunakan [resourceGroup().Location]
untuk memastikan semua sumber daya mewarisi lokasi grup sumber daya. Kode berikut adalah contoh menggunakan fungsi ini saat menyebarkan akun penyimpanan:
"resources": [
{
"name": "[variables('storageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "[variables('apiVersionStorage')]",
"location": "[resourceGroup().location]",
"comments": "This storage account is used to store the VM disks",
"properties": {
"accountType": "Standard_LRS"
}
}
]