Menerapkan praktik terbaik dengan menggunakan modul toolkit pengujian
Saat kami mengembangkan templat Azure Resource Manager (templat ARM), ada beberapa cara untuk mempermudah pembuatan templat yang valid dan memberikan rekomendasi untuk meningkatkan kualitasnya. Apa rekomendasi ini, dan mengapa mungkin bermanfaat bagi template Anda untuk dipatuhi?
Ada rekomendasi pada tingkat yang berbeda, semuanya mulai dari parameter dan variabel, hingga rekomendasi yang berlaku untuk sumber daya Anda. Mari kita lihat rekomendasi ini dari tingkat tinggi dan lihat apa yang bisa diperoleh dari mematuhinya:
Keberlanjutan. Saat Anda mengembangkan template, dari penulisan pertama kali hingga memperbaruinya, menjaganya tetap bersih dan teratur menjadi menantang dari waktu ke waktu. Saat templat Anda tumbuh, parameter dan variabel juga akan tumbuh. Penting bagi Anda untuk memahami apa kegunaan mereka, dan cara menggunakannya dengan tepat.
Bayangkan sebuah skenario yang memiliki parameter dengan nama yang buruk dan Anda berusaha keras untuk memahami apa fungsinya. Atau Anda menggunakan nilai yang dikodekan secara permanen yang semestinya tidak Anda lakukan, dan ketika sesuatu berubah, layanan Azure Anda tidak berfungsi. Semua masalah ini berkontribusi pada beban karena harus memahami dan kemudian mengabaikan apa yang Anda lihat. Disiplin dengan bagaimana Anda menamai sesuatu, dan membersihkan segalanya, dapat membantu mengurangi efek dari skenario tersebut.
Kebenaran. Anda mungkin mencoba menamai semuanya dengan cara yang benar, tetapi mungkin ada terlalu banyak aturan untuk dilacak. Situasi seperti itu membutuhkan alat yang mengingatkan Anda terhadap semua aturan dan peraturan tersebut, serta menerapkannya.
Fleksibilitas. Pastikan template Anda cukup fleksibel untuk digunakan di lingkungan apa pun. Jika Anda tidak membuat parameter templat dengan benar, templat tersebut mungkin tidak dapat digunakan kembali.
Ekstensibilitas. Terkadang Anda ingin menambahkan rekomendasi Anda sendiri. Perusahaan atau tim Anda mungkin memiliki aturan tersendiri untuk diterapkan.
Catatan
Memeriksa kode terhadap rekomendasi semacam ini terkadang disebut linting.
Toolkit Pengujian Templat ARM
Menggunakan alat pengujian adalah ide yang bagus, sehingga Anda dapat fokus pada penulisan sambil mengetahui bahwa alat ini akan menemukan masalah dan membuat template Anda lebih baik. Ada alat seperti itu: Toolkit Pengujian Templat ARM, terkadang disebut ARM-TTK. Ini membahas masalah yang disebutkan sebelumnya dengan menjalankan serangkaian tes. Tes dapat dikelompokkan ke dalam kategori berikut:
- Memvalidasi niat pengguna. Kategori ini melihat apakah variabel dan parameter yang dideklarasikan semuanya digunakan dan memperingatkan jika tidak.
- Mengikuti praktik keamanan. Aspek penting lainnya adalah memastikan bahwa tidak ada yang dikembalikan dari template yang mungkin sensitif, seperti rahasia API.
- Menggunakan konstruksi bahasa yang sesuai. Anda harus menggunakan fungsi konstruksi bahasa atau pembantu sehingga Anda tidak bergantung pada nilai hardcode.
Catatan
Ini adalah rekomendasi, bukan persyaratan. Tapi kami sangat mendorong Anda untuk mengikuti mereka.
Menginstal alat
Alat tersebut adalah modul PowerShell. Untuk dapat menjalankannya, Anda harus mengikuti langkah-langkah berikut:
- Instal PowerShell. Tugas ini dilakukan secara berbeda tergantung pada apakah Anda berada di Linux, Mac, atau Windows.
-
Unduh modul. Modul ini di-hosting di repositori GitHub. Anda dapat mengunduhnya dari sana atau mengambilnya melalui
git cloneperintah. - Imporlah modul. Langkah ini hanyalah instruksi satu baris yang Anda masukkan ke dalam sesi PowerShell, yang akan membuat perintah ARM-TTK tersedia.
Anda akan mengetahui cara melakukan semua ini di pelajaran berikutnya. Setelah menginstal alat ini, Anda siap untuk menjalankan pengujian pada templat Anda.
Menjalankan tes
Menjalankan pengujian melibatkan permintaan modul dengan parameter yang sesuai.
-TemplatePath adalah parameter wajib yang mengharapkan string yang menunjuk ke lokasi file template penyebaran. Nama file templat harus azuredeploy.json atau maintemplate.json. Oleh karena itu, uji coba yang khas dapat terlihat seperti perintah berikut:
Test-AzTemplate -TemplatePath path/to/template
Alat ini menguji file template dan juga menguji file template apa pun dalam direktori yang sama dan subfolder-nya.
Output khas dari uji coba dapat terlihat seperti ini:
[+] adminUsername Should Not Be A Literal (24 ms)
[+] apiVersions Should Be Recent (18 ms)
[+] artifacts parameter (16 ms)
[+] DeploymentTemplate Schema Is Correct (17 ms)
[+] IDs Should Be Derived From ResourceIDs (15 ms)
[-] Location Should Not Be Hardcoded (41 ms)
azuredeploy.json must use the location parameter, not resourceGroup().location (except when used as a default value in the main template)
Pengujian yang berhasil dikodekan dalam warna hijau dan diawali oleh [+]. Pengujian yang gagal dikodekan dengan warna merah dengan awalan [-].
Mengonfigurasi uji coba Anda dengan parameter pengujian
Anda telah mengetahui sejauh ini mengapa memasukkan parameter -TemplatePath diwajibkan saat menjalankan alat. Alat ini juga menerima parameter opsional. Parameter ini memungkinkan Anda untuk menjalankan file tertentu atau pengujian tertentu. Menggunakan parameter ini memberi Anda kontrol yang lebih terperinci dalam penulisan dan men-debug template Anda.
Parameter -File digunakan untuk menjalankan file tertentu. Parameter -Test memungkinkan Anda untuk menentukan skenario pengujian untuk dijalankan.
Anda dapat menggunakan parameter tersebut dengan cara berikut:
Jalankan pengujian pada satu file. Anda mungkin ingin menjalankan pengujian hanya pada satu file yang sedang Anda kerjakan. Alasannya adalah lebih mudah untuk berkonsentrasi pada penulisan file template tertentu. Manfaat tambahan adalah bahwa output akan berisi lebih sedikit kebisingan dan menunjukkan kepada Anda hanya apa yang Anda minati. Dengan menggunakan parameter
-Filedengan jalur ke file (termasuk nama file), Anda dapat menjalankan pengujian hanya pada file tersebut.Penting
Parameter masih mengharapkan azuredeploy.json atau maintemplate.json ada di lokasi yang ditentukan.
Jalankan satu jenis pengujian pada semua file. Terkadang Anda mungkin ingin menjalankan satu jenis tes untuk memastikan bahwa Anda memenuhi kriteria hanya untuk skenario itu. Anda dapat menyelesaikan tugas ini dengan menggunakan parameter
-Test. Parameter mengharapkan nama lengkap pengujian dalam tanda kutip; misalnya, Sumber Daya Harus Memiliki Lokasi.