Mengapa Web Developer Harus Belajar Vagrant?

Ahmad Oriza 25 Januari 2016

Mengapa Web Developer Harus Belajar Vagrant?

Virtualisasi

Perkembangan teknologi saat ini memungkinkan komputer untuk melakukan virtualisasi. Berjalan beriring dengan prosesor yang semakin canggih, misal saja teknologi VT-x dari Intel. Komputer dapat membagi resource dan menjalankan sistem operasi (Guest Os) diatas sistem operasi lain (Host OS). Seperti teman-teman tahu teknologi virtualisasi juga menjadi fundamental jalannya layanan Cloud, sebut saya IaaS atau PaaS (Bluemix, Engine Yard, Azure, Heroku, dll) yang notabene ditanam dalam komputer server.

Sebagian teman-teman pembaca juga pasti sudah mencoba Virtualbox atau VM Ware. Kedua software tersebut dapat dipakai untuk membangun mesin virtual. Teman-teman pengguna Windows dapat menjalankan Linux, begitu juga sebaliknya. Lalu apa sih dampak besar nya dalam development di mesin lokal?

Dengan bantuan virtualisasi kita dapat mengembangkan aplikasi di lokal dengan mensimulasikan persis keadaan server production yang sedang berjalan. Misal, teman-teman menggunakan Ubuntu Server 14.04 isinya berbagai senjata seperti Node Js, npm, nginx dan MongoDB dalam vps di suatu tempat. Teman-teman dapat install semua senjata tersebut persis di lokal dengan cara membuat mesin virtual berisi semua item tersebut, tidak peduli laptop/pc teman-teman memakai Mac atau Windows. Usaha tersebut semata mata untuk menghindari kemungkinan bug yang terjadi pada saat aplikasi di deploy. Pernahkah teman-teman mengalami bug misal saja blank saat aplikasi sudah diupload? padahal di mesin lokal berjalan normal. Itu semua karena environment yang berbeda antara production dan development. Bisa saja versi API bahasa pemrograman yang deprecated atau removed, bisa juga karena konfigurasi web server yang berbeda.

Tujuan dari pembuatan mesin virtual dalam konteks software development tidak hanya untuk mensimulasikan production server. Tapi juga dapat berguna bagi teman-teman yang suka mengulik dan mencoba teknologi baru. Teman-teman dapat bebas mencoba dan install tool secara lintas platform dan tertata rapih dalam mesin virtual, tanpa harus mengganggu sistem operasi utama.

Mengenal Vagrant

Lalu apa itu Vagrant? Vagrant adalah tool yang dapat merealisasikan cerita yang saya sampaikan diatas. Dengan Vagrant kita dapat menginstall lingkungan development dengan mudah dan praktis.

Mengapa harus dengan Vagrant? bukankah cukup dengan software mesin virtual saja sudah cukup dan bisa bangun development environment? ya, betul sekali. Kalau boleh saya bilang jika ditambah lagi dengan Vagrant pengalaman membuat mesin virtual untuk development akan lebih indah lagi. Pernahkah teman-teman install sistem operasi, database, tool beserta konfigurasi lainnya hanya dengan beberapa command? jika tidak, Vagrant dapat melakukan hal tersebut.

Salah satu istilah yang harus teman-teman ketahui dari Vagrant adalah Box. Box adalah format paket untuk Vagrant environment. Box lah yang menjadi pembungkus technology stack dengan segala konfigurasinya. Vagrant Box juga menyediakan beberapa command line untuk mengatur Box yang ada. Terdapat berbagai Box yang sudah tersedia dan bisa kita gunakan. Teman-teman bisa lihat pada tautan berikut ini https://atlas.hashicorp.com/boxes/search. Yang terdapat di situs tersebut merupakan public box, kita dapat menggunakannya kapan saja. Kita juga bisa menambah box baru dalam website tersebut.

Terdapat banyak pilihan Box yang berisi sistem operasi, bahasa pemrograman, server dan database yang bermacam-macam. Juga terdapat beberapa Box yang cukup populer diantaranya Laravel Homestead (Laravel + Nginx dsb) dan Scotch Box (LAMP Stack + Node Js + MongoDB dsb) yang mungkin sebagian dari teman-teman sudah pernah mendengarnya.

Mencoba Vagrant

Sebaiknya dalam proses belajar Vagrant kita sambil mencobanya. Pembuatan mesin virtual ini terdengar rumit, tapi sebenernya step by stepnya sangatlah mudah. Kita akan mencoba menginstall LAMP stack pada mesin virtual kita. Tepatnya kita akan mencoba untuk install Scotch Box, salah satu Vagrant Box sebelumnya saya paparkan. Isi dari Scotch Box diantaranya :
  • Ubuntu 14.04 LTS (Trusty Tahr)
  • PHP 5.6
  • Ruby 2.2.x
  • Vim
  • Git
  • cURL
  • GD and Imagick
  • Composer
  • Beanstalkd
  • Node
  • NPM
  • Mcrypt
Teman-teman dapat melihat lengkap isinya pada tautan berikut https://box.scotch.io/ .

Install Virtual Box

Silahkan install VM tool. Saya merekomendasikan Virtual Box karena tool tersebut free. Silakan download Virtual Box pada link berikut https://www.virtualbox.org/wiki/Downloads. Jalankan file installasi seperti biasanya teman-teman install, sepertinya tidak perlu saya gambarkan disini. Namun bila belum terbayang silahkan lihat video instalasi pada video berikut https://www.youtube.com/watch?v=LGUfa2HIx0E untuk Windows. Bagi teman-teman pengguna Ubuntu silahkan lihat disini https://www.youtube.com/watch?v=si0nSaCnNoY.

Install Vagrant

Kedua, silahkan install Vagrant. Download softwarenya pada tautan berikut https://www.vagrantup.com/downloads.html. Selanjutnya ikuti perintah installernya. Tidak ada konfigurasi khusus disini. Vagrant hanya mengkonfirmasi dimana binary software akan ditempatkan pada jendela instalasi ketiga.

[caption id="attachment_7233" align="aligncenter" width="548"]Vagrant Setup Vagrant Setup[/caption]

[caption id="attachment_7234" align="aligncenter" width="543"]Vagrant was Installed Vagrant was Installed[/caption]

Gambar diatas menunjukan Vagrant telah terinstall. Selanjutnya teman-teman buka terminal atau command prompt. Lalu ketikan perintah berikut untuk memastikan lagi Vagrant telah berjalan :

c:\>vagrant -v

// Untuk Command prompt

user@computer:~$ vagrant -v

// Untuk terminal

Jika teman-teman mendapatkan hasil berupa versi Vagrant maka installasi berhasil. Vagrant siap untuk kita gunakan.

Install Vagrant Box

Selanjutnya mari kita coba untuk menginstall Box. Seperti saya paparkan sebelumnya, kita akan menginstall Scotch Box.  Jika kita lihat dalam kumpulan Box pada Hashicorp Atlas (tempat  public Box berada) posisi Scotch Box ada pada urutan kedelapan.

[caption id="attachment_7235" align="aligncenter" width="566"]Vagrant Box at Atlas Vagrant Box at Atlas[/caption]

Silahkan teman-teman masuk ke folder dimana Vagrant Box akan teman-teman simpan. Kalau cara saya agar tersimpan rapih, saya membuat folder baru dengan nama  "Vagrant-Box" . Nanti semua Box yang saya ingin coba akan berada pada direktori kerja tersebut. Ya, jika sudah masuk direktori kerja silahkan teman-teman eksekusi perintah berikut :

vagrant box add scotch/box

// vagrant box add <user>/<box>

Perintah diatas untuk menambahkan box baru pada direktori kerja. Disini Vagrant akan mendownload sistem operasi beserta semua tool yang kita perlukan dari repository.

[caption id="attachment_7239" align="aligncenter" width="540"]Successfully installed box Successfully installed box[/caption]

Prosesnya memang cukup memakan waktu karena besarnya file. Saya asumsikan teman-teman telah selesai download box tersebut. Selanjutnya silahkan teman-teman ketikan perintah berikut  :

vagrant init

Perintah diatas bertujuan membuat environment baru dan mengenerate sejumlah file yang dibutuhkan untuk running box. Jika berhasil eksekusi perintah 'vagrant init' selanjutnya silahkan cek direktori kerja, disitu terdapat file "vagrantfile". Bukalah file tersebut, kemudian lihat baris ke-13. Nama vm box masih terisi default yaitu "base". Kita harus mengganti settingan tersebut dengan "scotch/box" seperti pada gambar berikut :

[caption id="attachment_7240" align="aligncenter" width="546"]Editing Vagrantfile Editing Vagrantfile[/caption]

Save file tersebut. Lalu jalankan perintah "vagrant up" berikut ini :

D:\Vagrant-Box\vagrant up

[caption id="attachment_7241" align="aligncenter" width="552"]Vagrant Up Vagrant Up[/caption]

Sampai tahap ini mesin virtual berisi lingkungan development sudah siap untuk kita gunakan. Untuk memastikan lagi apakah semua telah terinstall dan berjalan kita kan coba untuk masuk ke dalam mesin virtual dengan ssh.

Masuk kedalam Mesin Virtual Dengan SSH

Silahkan eksekusi perintah "vagrant ssh" masih pada direktori kerja. Hasilnya akan tampil seperti gambar berikut :

[caption id="attachment_7242" align="aligncenter" width="543"]SSH Tunelling to Virtual Machine SSH Tunelling to Virtual Machine[/caption]

Gambar diatas menunjukan salah satu Vagrant Box yaitu Scotch Box telah berhasil kita install. Kita sukses masuk kedalam terminal dari Scotch Box. Seperti saya paparkan sebelumnya, Scotch Box berisi lingkungan development LAMP stack yang dibumbui berbagai tool yang juga sudah terinstall seperti vim, apache, curl, node js, composer, dan sebagainya.

[caption id="attachment_7244" align="aligncenter" width="544"]Version Checking Version Checking[/caption]

Untuk memastikan teman-teman bisa check berbagai tool tersebut seperti pada gambar diatas. Saya mencoba untuk cek versi dari php, ruby, node dan git.

Sampai disini kita telah sukses mencoba Vagrant untuk pertama kali. Tentunya dalam tutorial ini masih banyak kekurangan dan tidak lengkap. Pembahasan Vagrant begitu luas seperti bagaimana membuat Box sendiri, provisioning, manajemen box. Mudah-mudahan juga dapat saya share di Codepolitan.

Untuk tutorial selanjutnya saya akan mencoba share bagaimana cara hosting pada mesin virtual tersebut lalau bagaimana cara mengakses aplikasi yang kita buat via web browser pada sistem operasi utama (host os).

Terimakasih atas perhatiannya dan selamat mencoba!