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 menyediakan 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.

Namespace publik

Karena Azure Stack Hub dihosting di pusat data Anda, Azure Stack Hub memiliki namespace layanan titik akhir yang berbeda dari cloud publik Azure. Akibatnya, titik akhir publik yang dikode permanen di templat Azure Resource Manager tidak berfungsi ketika Anda mencoba menyebarkannya ke Azure Stack Hub. Anda dapat membangun titik akhir layanan secara dinamis menggunakan reference fungsi dan concatenate untuk mengambil nilai dari penyedia sumber daya selama penyebaran. Misalnya, daripada secara manual menetapkan blob.core.windows.net di templat Anda, ambil data primaryEndpoints.blob untuk secara dinamis mengatur titik akhir osDisk.URI:

"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
 '/',variables('OSDiskName'),'.vhd')]"}}

Pemversionan API

Versi layanan Azure mungkin berbeda antara Azure dan Azure Stack Hub. Setiap sumber daya memerlukan atribut apiVersion , yang menentukan kemampuan yang ditawarkan. Untuk memastikan kompatibilitas versi API di Azure Stack Hub, versi API berikut ini valid untuk setiap penyedia sumber daya:

Penyedia Sumber Daya apiVersi
Komputasi 2015-06-15
Jaringan 2015-06-15, 2015-05-01-preview
Penyimpanan 2016-01-01, 2015-06-15, 2015-05-01-preview
KeyVault 2015-06-01
Layanan Aplikasi 2015-08-01

Fungsi templat

Fungsi Azure Resource Manager menyediakan kemampuan yang diperlukan untuk membangun templat dinamis. Sebagai contoh, Anda dapat menggunakan fungsi untuk tugas seperti:

  • Menggabungkan atau memangkas string.
  • Mereferensikan nilai dari sumber daya lain.
  • Melakukan iterasi pada sumber daya untuk menginstal beberapa instans.

Fungsi-fungsi ini tidak tersedia di Azure Stack Hub:

  • Lewati
  • Ambil

Lokasi sumber daya

Templat Azure Resource Manager menggunakan location atribut 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 berada di pusat data Anda. Untuk memastikan templat dapat ditransfer antara Azure dan Azure Stack Hub, Anda harus mereferensikan lokasi grup sumber daya saat Anda menyebarkan sumber daya individual. Anda dapat melakukan ini menggunakan [resourceGroup().Location] untuk memastikan semua sumber daya mewarisi lokasi grup sumber daya. Kode berikut adalah contoh penggunaan 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"
  }
}
]

Langkah selanjutnya