Menguji kode Terraform

Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaksis HCL. Sintaksis HCL memungkinkan Anda menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda untuk melihat pratinjau perubahan infrastruktur Anda sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.

Terraform adalah alat Infrastructure as Code (IaC). Kategori alat ini mengacu pada fakta bahwa Anda memperlakukan file Terraform Anda seperti halnya kode sumber proyek. Bagian dari proses tersebut termasuk pembuatan versi dan kontrol kode sumber. Selain itu, pengujian juga harus menjadi bagian dari proses Anda. Artikel ini memberikan gambaran umum tentang berbagai jenis pengujian yang dapat dijalankan terhadap proyek Terraform.

Menerapkan pengujian integrasi

Pengujian integrasi memvalidasi bahwa perubahan kode yang baru diperkenalkan tidak merusak kode yang ada. Di DevOps, integrasi berkelanjutan (CI) mengacu pada proses yang membangun keseluruhan sistem setiap kali basis kode diubah - seperti seseorang yang ingin menggabungkan PR ke dalam repositori Git. Daftar berikut berisi contoh umum pengujian integrasi:

  • Alat analisis kode statik seperti lint dan format.
  • Jalankan terraform validate untuk memverifikasi sintaksis file konfigurasi.
  • Menjalankan terraform plan untuk memastikan konfigurasi akan berfungsi seperti yang diharapkan.

Menerapkan pengujian unit

Uji unit memastikan bagian atau fungsi tertentu dari suatu program berperilaku dengan benar. Uji unit ditulis oleh pengembang fungsionalitas. Terkadang disebut pengembangan berbasis pengujian atau TDD, jenis pengujian ini melibatkan siklus pengembangan singkat yang berkelanjutan. Dalam konteks proyek Terraform, pengujian unit dapat berupa penggunaan terraform plan untuk memastikan bahwa nilai aktual yang tersedia dalam rencana yang dihasilkan setara dengan nilai yang diharapkan.

Pengujian unit dapat sangat bermanfaat ketika modul Terraform Anda mulai menjadi lebih kompleks:

  • Menghasilkan blok dinamis
  • Menggunakan perulangan
  • Menghitung variabel lokal

Seperti halnya pengujian integrasi, sering kali pengujian unit disertakan dalam proses integrasi berkelanjutan.

Mengimplementasikan pengujian kepatuhan

Pengujian kepatuhan digunakan untuk memastikan konfigurasi mengikuti kebijakan yang telah Anda tentukan untuk proyek. Misalnya, Anda mungkin menentukan konvensi penamaan geopolitik untuk sumber daya Azure Anda. Atau Anda mungkin ingin mesin virtual dibuat dari subset gambar yang telah ditentukan. Pengujian kepatuhan akan digunakan untuk menegakkan aturan ini.

Pengujian kepatuhan juga umumnya didefinisikan sebagai bagian dari proses integrasi berkelanjutan.

Menerapkan pengujian end-to-end (E2E)

Pengujian E2E memvalidasi kerja program sebelum disebarkan ke produksi. Contoh skenario mungkin adalah modul Terraform yang menyebarkan dua mesin virtual ke dalam jaringan virtual. Anda mungkin ingin mencegah kedua mesin saling ping. Dalam contoh ini, Anda dapat menentukan tes untuk memverifikasi hasil yang diinginkan sebelum penyebaran.

Pengujian E2E biasanya merupakan proses tiga langkah. Pertama, konfigurasi diterapkan ke sebuah lingkungan pengujian. Kode kemudian akan dijalankan untuk memverifikasi hasilnya. Terakhir, lingkungan pengujian dapat dipulihkan atau diturunkan (seperti melepas satu mesin virtual).