Menambahkan fleksibilitas ke templat Azure Resource Manager Anda dengan menggunakan fungsi templat

Selesai

Dalam skenario ini, Anda ingin membuat penerapan templat Azure Resource Manager (ARM) Anda ke lingkungan yang berbeda semudah mungkin. Salah satu bidang pertikaian akan hadir dengan nama unik untuk akun penyimpanan Azure.

Untuk mengatasi masalah ini, Anda memutuskan untuk membuat ekspresi dengan menggunakan Fungsi templat ARM.

Apa itu fungsi templat ARM?

Fungsi templat ARM menambahkan fleksibilitas ke templat ARM Anda dengan mendapatkan nilai secara dinamis selama penerapan.

Untuk memahami fungsi, Pertama-tama Anda perlu memahami ekspresi. Ekspresi adalah nilai yang dievaluasi saat templat diterapkan. Mereka dimulai dan diakhir dengan tanda kurung [], dan dapat mengembalikan string, bilangan bulat, Boolean, array, atau objek.

Di modul sebelumnya di jalur pembelajaran ini, Anda sudah bekerja dengan ekspresi di template Resource Manager Anda. Misalnya, Anda menggunakan:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

Ekspresi adalah nilai defaultValue: atribut. Perhatikan bahwa ekspresi ini memiliki fungsi template ARMresourceGroup(). Fungsi ini mengembalikan informasi tentang grup sumber daya yang digunakan template ini. .locationMengambil satu properti dari objek yang dikembalikan oleh fungsi. Fungsi memungkinkan Anda untuk membuat nilai yang Anda butuhkan secara dinamis.

Bagaimana cara bekerja dengan fungsi template ARM?

Ada beberapa aturan yang harus diikuti saat Anda bekerja dengan fungsi:

  • Gunakan tanda kutip tunggal saat Anda meneruskan nilai string ke dalam fungsi. Berikut adalah contohnya: concat('storage',uniqueString(resourceGroup().id)). Fungsinya adalah concat, dan string yang Anda teruskan ke fungsi adalah 'storage'.

  • Untuk bekerja dengan nilai literal dalam fungsi templat, Anda memerlukan karakter escape. Karakter escape bervariasi bergantung pada apa yang Anda hindari.

  • Untuk mengatur properti menjadi null, Anda bisa menggunakan null atau [json('null')]. Fungsi JSON mengembalikan objek kosong saat Anda memberikan null sebagai parameter.

    "stringValue": null,
    "objectValue": "[json('null')]"
    

Resource Manager menyediakan beberapa fungsi template ARM untuk Anda. Fungsi ini dicantumkan dalam grup berdasarkan tipenya:

  • Fungsi array untuk bekerja dengan array. Misalnya, first dan last.
  • Fungsi perbandingan untuk membuat perbandingan dalam templat Anda. Misalnya, equals dan greater.
  • Fungsi tanggal untuk bekerja dengan tanggal. Misalnya, utcNow dan dateTimeAdd.
  • Fungsi nilai penerapan untuk mendapatkan nilai dari bagian templat dan nilai yang terkait dengan penerapan. Misalnya, environment dan parameters.
  • Fungsi logika untuk bekerja dengan kondisi logis. Misalnya, if dan not.
  • Fungsi numerik untuk bekerja dengan bilangan bulat. Misalnya, max dan mod.
  • Fungsi objek untuk bekerja dengan objek. Misalnya, contains dan length.
  • Fungsi sumber daya untuk mendapatkan nilai sumber daya. Misalnya, resourceGroup dan subscription.
  • Fungsi string untuk bekerja dengan string. Misalnya, length dan startsWith.

Bagaimana cara menggunakan beberapa fungsi dalam satu ekspresi?

Anda dapat menggunakan beberapa fungsi templat bersama-sama untuk membuat ekspresi Anda sendiri. Dalam skenario ini, Anda perlu membuat ekspresi yang membuat nama unik untuk setiap grup sumber daya dengan menggabungkan input awalan dengan hash ID grup sumber daya. Ekspresi ini menghasilkan nama akun penyimpanan seperti dev2hu6fktr577wh dan staging5his8hgr67tt5. Anda dapat menggunakan empat fungsi untuk membangun nilai string ini. Misalnya:

"[toLower(concat('Storage',uniqueString(resourceGroup().id)))]"

Mari kita telusuri melalui ekspresi ini.

Dimulai dengan concat, fungsi ini mengambil sejumlah argumen, dan dapat menerima string atau array untuk parameter. Di sini, Anda menggunakan string literal "Storage" dan menggabungkannya dengan hasil fungsi lain, uniqueString. Fungsi uniqueString ini membuat string hash deterministik berdasarkan parameter. Dalam ekspresi ini, Anda membuat hash ID grup sumber daya terkini dengan menggunakan fungsi lain, resourceGroup.

Berikut adalah output dari apa yang kita bahas sejauh ini:

Picture of a string created by concatenating the word Storage with a 13-character hash that contains both uppercase and lowercase letters.

Untuk mematuhi konvensi penamaan, Anda perlu string ini menjadi huruf kecil semua. Di sini, Anda menambahkan fungsi toLower sebagai fungsi luar.

Berikut adalah tampilan string yang dihasilkan:

Picture of a string created by concatenating the word Storage with a 13-character hash, and then converting all letters to lowercase.