Blog Personal Inganta

Berbagi pengetahuan untuk memperkaya pemahaman

07 Apr 2020

Perubahan Infrastruktur Menggunakan Alur Kerja Pull Request dan Terraform Cloud

Ada 3 hal penting yang perlu diperhatikan dalam menggunakan Terraform. Yang pertama adalah penggunaan sistem kontrol versi untuk menyimpan kode Terraform. Sistem kontrol versi yang banyak digunakan saat ini adalah Git dengan Github sebagai repositori terpusat. Hal penting selanjutnya adalah basis data untuk menyimpan kondisi sumber daya yang dikelola oleh Terraform. Media penyimpanan bisa berupa lokal file atau penyimpanan jarak jauh seperti Terraform Cloud. Yang ketiga adalah lingkungan dimana Terraform dijalankan. Terraform adalah program berbasis baris perintah yang bisa dijalankan di berbagai lingkungan seperti mesin lokal (laptop) atau lingkingan jarak jauh seperti di Terraform Cloud. Silakan cek artikel Menjajal Layanan Terraform Cloud untuk membaca lebih lanjut tentang penggunaan Terraform Cloud sebagai penyimpanan basis data dan lingkungan eksekusi jarak jauh Terraform.

Alur yang umum digunakan oleh pengguna Terraform untuk mengelola sistem berkelas produksi adalah sebagai berikut:

  1. Pengembang infrastruktur mengkonfigurasi Terraform untuk menggunakan penyimpanan jarak jauh seperti Terraform Cloud.
  2. Pengembang infrastruktur menuliskan kode untuk pengembangan infrastruktur pada mesin lokal pengembang.
  3. Pengembang menjalankan tahap perencanaan Terraform di mesin lokal dan meninjau kembali rencana eksekusi.
  4. Pengembang menjalankan tahap eksekusi Terraform di mesin lokal.
  5. Pengembang menyetor kode ke repositori terpusat.

Alur di atas memiliki 2 keterbatasan yang berdampak pada pengguna di dalam tim. Masalah pertama adalah kesulitan membagikan rencana eksekusi untuk ditinjau oleh anggota tim lainnya. Rencana eksekusi tersedia di mesin lokal pengembang sehingga diperlukan jalur komunikasi lain untuk membagikannya. Permasalahan lainnya adalah lingkungan eksekusi yang bergantung pada mesin lokal salah satu pengembang. Mesin lokal pengembang tidak selalu tersedia bagi anggota anggota tim lainnya untuk menjalankan Terraform.

Implementasi Alur Kerja Menggunakan Github Pull Request (PR) dan Terraform Cloud

Terraform Cloud dan Github Pull Request bisa digunakan untuk mendukung alur kerja di dalam tim. Alur ini cocok diadopsi oleh tim pengembang yang sudah terbiasa menggunakan Github PR sebagai mekanisme untuk mengelola perubahan kode. Alur kerja ini juga mengatasi kedua masalah yang dijelaskan di atas. Pengembang yang ingin melakukan perubahan infrastruktur mengirimkan PR yang berisi perubahan kode Terraform ke anggota tim yang lain untuk ditinjau. Selain untuk meningkatkan kepercayaan diri bahwa perubahan tingkat memiliki dampak buruk, mekanisme ini juga berguna untuk menyebarkan pengetahuan di dalam tim.

  1. Siapkan integrasi antara Github repositori dan Terraform Cloud seperti dijelaskan pada Terraform Cloud sebagai lingkungan eksekusi jarak jauh Terraform.
  2. Siapkan cabang baru untuk menyimpan perubahan, git chekout -b infra-change.
  3. Ubah kode Terraform, simpan perubahan, dan setor ke Github.
    git add .
    git commit -m 'Perubahan infrastruktur'
    git push origin infra-change
    
  4. Buat PR baru di Github
    1. Masuk ke halaman repositori di Github.
    2. Klik tombol Compare & pull request untuk mulai membuat PR. Buat PR
    3. Pada halaman Open a pull request, kita bisa meminta ulasan dengan menyebutkan nama pengguna Github pada bagian Reviewers. Kemudian klik tombol Create pull request untuk menyelesaikan pembuatan PR. Halaman pembuatan PR
  5. Terraform Cloud secara otomatis menjalankan tahap perencanaan Terraform dan melaporkan hasilnya pada halaman PR. Klik tombol Details untuk melihat detail rencana eksekusi di halaman Terraform Cloud. Hasil PR
  6. Review detail rencana eksekusi pada halaman Terraform Cloud. Detil rencana eksekusi
  7. Klik tombol Merge pull request pada halaman PR untuk menjalankan rencana eksekusi Terraform.
  8. Terraform Cloud membutuhkan konfirmasi untuk menjalankan rencana eksekusi. Klik tombol Confirm & Apply pada halaman Run di lingkungan kerja Terraform Cloud. Eksekusi rencana Terraform bisa diubah menjadi otomatis dengan mengganti opsi Apply Method menjadi Auto apply pada menu Settings/General. Jangan lupa menekan tombol Save settings untuk menyimpan perubahan.
  9. Bersihkan cabang yang tidak digunakan lagi dengan menekan tombol Delete branch pada halaman PR.
  10. Kita bisa melihat status eksekusi Terraform dengan menekan menu status commit (tombol centang warna hijau), kemudian klik tombol Details untuk melihat detil eksekusi di halaman Terraform Cloud. Status commit Github

Mengelola perubahan kode menggunakan mekanisme Pull Request (PR) merupakan hal yang lazim diterapkan oleh pengembang aplikasi. Alur kerja ini membantu pengembang untuk menjaga konsistensi pengelolaan perubahan ketika bekerja di dalam tim. Pengembang infrastruktur bisa belajar dari praktik ini untuk memelihara infrastruktur yang sudah didefinisikan dalam bentuk kode.