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"
  }
}
]

Langkah berikutnya