Development VM via Infrastructure as Code (IaC) menggunakan Vagrant + VMware Desktop

Dalam proses development sebuah aplikasi, khususnya yang melibatkan banyak developer/programmer mungkin akan kita temui satu hal yang bisa kita sebut sebagai kendala. Satu hal yang saya maksud disini adalah masalah fragmentasi atau adanya masalah yang mungkin timbul karena perbedaan lingkungan sistem atau system environment yang digunakan oleh developer.

Contohnya adalah ada sekumpulan tim developer yang mungkin terdiri beberapa orang. Tim ini akan membangun aplikasi dan saat proses development mereka akan develop di sistem operasi linux. Mungkin Developer 1, dia menggunakan sistem operasi windows di laptop atau PC nya, kemudian membuat local development via vmware workstation dan menjalankan vm ubuntu linux versi 20.04. Kemudian Developer 2, dia menggunakan sistem macbook, kemudian membuat local development via vmware fusion dan menjalankan ubuntu linux versi 18.04. Developer 3, juga menggunakan windows di laptopnya, kemudian membuat vm via virtualbox dan menjalankan ubuntu linux versi 20.04. Namun di dalam ubuntunya, dia menggunakan tools anggap web server nginx dan bahasa pemrograman python yang berbeda versi dengan Developer 1. Kemudian timbul permasalahan baru, aplikasi yang di develop ada yang berjalan di salah 1 developer namun tidak berjalan di local development developer lain. Hal ini yang kita sebut fragmentasi.

Untuk meminimalisir hal ini, kita dapat membuatkan 1 standarisasi development environment. Misal developer di tim tersebut harus menggunakan vm ubuntu linux versi 20.04, kemudian di dalamnya terinstall python versi 3.8.6, menjalankan docker container versi 20.10.

Agar lebih memudahkan dalam membuat standarisasi tersebut dan mencegah human error, kita dapat membuat sebuah standarisasi menggunakan Infrastructure as Code (IaC) menggunakan tools yang dibuat oleh Hashicorp yang dinamakan Vagrant. Dan dengan metode ini kita juga dapat upload file IaC yang digunakan oleh tim member ke public repository, sehingga saat orang lain atau developer lain memerlukan, kita dapat mereferensikan file source code tersebut dan agar di pull ke lokal mereka.

Pada artikel kali ini saya akan mencoba memberikan informasi langkah langkah konfigurasi dan menjalankan vm via Vagrant. Lingkungan sistem yang saya gunakan adalah laptop dengan sistem operasi Windows 10 dan VMware workstation sebagai local hypervisor untuk menjalankan VM. VM yang akan saya buat adalah Ubuntu Linux versi 20.04. Secara default Vagrant mendukung virtualbox dan jika menggunakan VMware workstation ada beberapa tambahan utility dan plugin yang perlu kita install dan akan saya coba jelaskan juga di artikel kali ini.

Berikut langkah langkah konfigurasinya:

  1. Hal pertama yang dilakukan adalah install Vagrant. Download sesuai dengan sistem operasi yang digunakan. Misalkan dalam contoh di laptop saya menggunakan versi Windows.
    Download di link berikut: Vagrant Download Page

  2. Secara default jika kita menggunakan hypervisor virtualizationnya adalah virtualbox, kita tidak perlu install tambahan plugin atau utility. Namun pada artikel kali ini, saya menggunakan VMware Workstation sebagai hypervisor virtualization yang digunakan pada laptop saya. Sehingga saya perlu tambahkan instalasi Vagrant VMware Utility.
    Download di link berikut: Vagrant VMware Utility Download Page

  3. Setelah instalasai selesai, pastikan vagrant sudah siap digunakan. Dapat memastikan dengan cara ketik command berikut di terminal atau powershell terminal.

     vargant --version  
    

    Image

  4. Selain VMware Utility, ada hal lain yang kita juga perlukan jika menggunakan VMware Desktop sebagai hypervisor yang diintegrasi ke Vagrant. Kita perlu install plugin vagrant-vmware desktop. Install menggunakan command berikut

     vagrant plugin install vagrant-vmware-desktop  
    

    Jika sudah selesai install, pastikan bahwa plugin sudah berhasil terinstall dan siap digunakan dengan command.

     vagrant plugin list  
    

    Image

  5. Selanjutnya bisa dengan mulai membuat folder atau directory untuk vagrant project

    Image

  6. Seperti yang saya sebutkan di atas, kita akan mencoba menjalankan vm dengan OS ubuntu 20.04. Hal selanjutnya yang diperlukan adalah download base image yang akan digunakan oleh VM yang akan kita jalankan. Image OS pada istilah Vagrant sering juga disebut sebagai Box. Kita dapat melihat Box yang tersedia dari Vagrant Cloud repository pada link berikut Vagrant Cloud. Saya mulai dengan mencari Box Ubuntu 20.04

    Image

  7. Secara default, pada folder atau directory Vagrant kita tidak berisi apapun. Mulailah dengan inisialisasi awal. Hal ini dilakukan dengan mereferensikan Box yang akan kita gunakan.

     vagrant init generic/ubuntu2004  
    

    Image

  8. Selanjutnya vagrant akan membuat satu file baru yang dinamakan Vagrantfile

    Image

  9. Vagrantfile berisi barisan barisan kode terkait parameter atau konfigurasi apa yang akan kita gunakan dalam menjalankan VM. Hal ini sesuai dengan konsep Infrastructure as Code (IaC) dimana semua konfigurasi infrastruktur dapat didefinisikan secara deklaratif via barisan kode. Pada contoh kali ini saya tidak merubah apapun isi dalam file, namun jika kita memerlukan kustomisasi, hal ini dimungkinkan dan Insya Allah akan coba saya sampaikan di artikel lainnya.

    Image

  10. Setelah itu kita dapat mulai menjalankan vm via vagrant. Karena saya menggunakan vmware desktop maka saya dapat mereferensikan provider vmware dekstop yang saya gunakan. Sebagai langkah awal, Vagrant akan melihat box atau image apa yang digunakan, jika belum ada di lokal, maka akan di download terlebih dahulu. Contoh commandnya sebagai berikut.

    vagrant up --provider vmware_desktop  
    

    Image

  11. Tunggu hingga beberapa proses terkait selesai dan vm sudah selesai boot dan siap digunakan.

    Image

  12. Untuk dapat mengakses/meremote vm yang sudah selesai dijalankan, kita dapat menggunakan command berikut.

    vagrant ssh  
    

    Vagrant akan melakukan ssh ke vm tersebut, dan kita dapat mencoba menjalankan command command yang ada di OS ubuntu tersebut.

    Image

  13. Jika vm development sudah tidak digunakan kita dapat dengan mudah menghapus vm tersebut dengan command berikut.

    vagrant destroy  
    

    Image

Dari hal ini yang bisa kita ambil manfaatnya adalah membuat development VM yang terstandarisasi akan lebih mudah dan proses implementasi di setiap local environment developer akan lebih cepat dan seragam. Serta mengurangi potensi fragmentasi dan human error.
Sekian artikel kali ini terkait development VM via IaC menggunkan Vagrant dan VMware Desktop.

Semoga bermanfaat.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: