Belajar Vagrant

Reading time ~7 minutes

Ketika kita melakukan development terhadap sebuah aplikasi terkadang kita membutuhkan tool - tool penting untuk membantu pada developer untuk membuat sebuah aplikasi. Ada beberapa masalah yang sering ditemui oleh seorang developer diantaranya adalah :

  • Kesulitan ketika antar developer menggunakan sistem operasi yang berbeda.
  • Kesulitan ketika server yang digunakan menggunakan sistem operasi yang berbeda.
  • Kesulitan ketika project yang sedang dikerjakan tidak dapat berjalan di PC yang lain.

Dari beberapa kesulitan tersebut kita dapat meminimalkannya dengan menggunakan vagrant. Apa itu vagrant ?

Vagrant adalah sebuah software yang menggunakan teknologi virtual machine dimana kita dapat membuat lingkungan development secara portable, konsisten dan lebih fleksible.

Dikarenakan vagrant menggunakan teknologi virtual machine maka kita membutuhkan software seperti virtual box dan VmWare. Tujuannya adalah kita ingin membuat sebuah lingkungan development secara portable, contohnya misalnya pada saat production kita akan menggunakan sistem operasi ubuntu maka pada saat development kita akan menggunakan ubuntu sebagai sistem operasi sehingga pada saat proses deploy ke production diharapkan tidak ada lagi permasalahan yang muncul.

Ketika ingin melakukan duplikasi atau dibagikan kepada team developer yang lain maka kita tinggal menggunakan perintah vagrant sehingga secara otomatis vagrant akan melakukan konfigurasi pada PC masing - masing team developer sehingga mempermudah dalam development sebuah aplikasi.

Instalasi Virtual Box

Pada artikel ini, penulis menggunakan virtual box dikarenakan virtual box merupakan software open source dan lebih mudah dikonfigurasikan. Silahkan buka file sources.list dengan menjalankan perintah.

sudo gedit /etc/apt/sources.list

kemudian tambahkan sintak berikut pada baris akhir

deb http://download.virtualbox.org/virtualbox/debian xenial contrib

Jangan lupa sesuiakan dengan sistem operasi anda, disini saya menggunakan ubuntu 16.04 yaitu xenial, Setelah selesai kemudian disimpan dan untuk memasukkan public key jalankan perintah berikut.

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

Kemudian untuk melakukan instalasi virtual box jalankan perintah berikut.

sudo apt-get update
sudo apt-get install virtualbox-5.0

Instalasi Vagrant

Untuk melakukan instalasi vagrant silahkan download vagrant terlebih dahulu di vagrant download, disini penulis menggunakan ubuntu 16.04 64 bit maka penulis memilih versi debian 64 bit. Untuk melakukan instalasinya silahkan jalankan perintah.

sudo dpkg -i vagrant_1.8.1_x86_64.deb

jangan lupa sesuaikan dengan nama file anda. Kemudian lakukan pengecekan vagrant dengan perintah.

vagrant --version

Instalasi Box Vagrant

Box pada vagrant berfungsi sebagai virtual machine yang memuat sistem operasi dan disana juga terdapat seluruh konfigurasi yang kita lakukan. Dengan demikian maka secara tidak langsung sebenarnya kita menggunakan virtual machine maka oleh karena itu kita membutuhkan virtual box sebagai tempat virtual machine.

Mengapa kita menggunakan vagrant ? mengapa tidak menggunakan virtual box saja ?

Salah satu alasannya adalah ketika menggunakan vagrant maka vagrant akan melakukan semua konfigurasi hanya dengan satu perintah pada saat sistem operasi start up sedangkan jika kita menggunakan virtual box maka kita harus melakukan konfigurasi secara manual.

Repository box bisa dilihat di repository box. Berikut adalah bentuk umum untuk melakukan instalasi box.

vagrant box add user/box

bisa dilihat bahwa untuk melakukan instalasi box sangatlah mudah yaitu kita hanya menggunakan perintah diatas dan anda hanya perlu mengganti perintah user/box. Perintah user berarti adalah pembuat box sedangkan perintah box adalah box yang ingin kita gunakan. Disini penulis menggunakan box ubuntu/trusty64 maka jalankan perintah berikut.

vagrant box add ubuntu/trusty64

PERHATIAN !

Untuk melakukan instalasi box membutuhkan koneksi internet dan membutuhkan instalasi yang lama dikarenakan kita akan mendownload sebuah sistem operasi yang berkisar 1 GB > tergantung dari sistem operasi yang akan digunakan.

Membuat Project

Untuk membuat project, silahkan buat sebuah folder misalnya disini penulis membuat folder ubuntu-vagrant. Kemudian jalankan perintah berikut di dalam folder tersebut.

vagrant init

maka akan muncul output seperti berikut.

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Kemudian buka file Vagrantfile ubah codingannya menjadi seperti berikut.

Vagrant.configure(2) do |config|
  
  #konfigurasi box untuk sistem operasi ubuntu trusty 64 bit
  config.vm.box = "ubuntu/trusty64"

  config.vm.provider "virtualbox" do |vb|
    
     # konfigurasi virtual box dengan ram 1 GB
     vb.memory = "1024"
   end
end

Setelah selesai untuk menjalankan silahkan jalankan perintah berikut.

vagrant up

dan berikut adalah output pada terminal.

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Setting the name of the VM: ubuntu-vagrant_default_1451702137384_76705
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 4.3.34
    default: VirtualBox Version: 5.0
==> default: Mounting shared folders...
    default: /vagrant => /home/rizki/Documents/vagrant/ubuntu-vagrant

Jika box telah jalan, langkah selanjutnya adalah login ke dalam box yang telah kita jalankan. Untuk login ke dalam box silahkan jalankan perintah berikut.

vagrant ssh

Jika berhasil maka akan muncul output pada terminal seperti berikut.

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-74-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 1.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.

dan secara otomatis terminal yang kita gunakan akan berubah menjadi seperti gambar berikut.

Screenshot from 2016-01-02 09:41:17.png

Perintah Vagrant

Di dalam vagrant terdapat beberapa perintah penting, berikut adalah beberapa perintah yang sering digunakan di dalam vagrant.

Destroy

Perintah ini biasanya digunakan untuk menghapus project dan konfigurasi box yang telah kita buat. Untuk menghapus project kita dapat masuk ke dalam folder project dan menjalankan perintah.

vagrant destroy

Halt

Perintah ini berfungsi untuk mematikan/shut down box sehingga konfigurasi yang telah kita kita buat di dalam box tidak akan hilang. Untuk mematikan box kita dapat masuk ke dalam folder project dan menjalankan perintah.

vagrant halt

Suspend

Perintah ini biasanya kita gunakan untuk suspend atau sleep box. Sama seperti halt, semua konfigurasi yang telah kita buat tidak akan hilang. Untuk melakukan suspend pada project, kita dapat masuk ke dalam folder project dan menjalankan perintah.

vagrant suspend

Provisioning

Provisioning adalah menginstall/mengkonfigurasi sistem yang terdapat di dalam sebuah box. Biasanya yang kita lakukan sehari - hari adalah melakukan instalasi apache, mysql dan sebagainya, akan tetapi hal - hal seperti ini akan merepotkan ketika kita diharuskan melakukan instalasi terus - menerus ketika kita melakukan vagrant up pada PC yang berbeda. Untuk mengoptimalkannya maka kita akan menggunakan fitur provisioning pada vagrant. Silahkan buat sebuah file install.sh di dalam folder ubuntu-vagrant kemudian isi dengan kodingan berikut.

#!/bin/sh

echo "mulai Provisioning"

echo "software source dan repository"
cp /vagrant/config/sources.list /etc/apt/sources.list
cp /vagrant/config/environment /etc/environment

echo "tambah repository nginx"
add-apt-repository -y ppa:nginx/stable

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

echo "Instalasi nginx"
apt-get install -y nginx

silahkan buat folder config, kemudian buat file sources.list di dalam folder config. Isikan codingan berikut ini.

deb http://kambing.ui.ac.id/ubuntu trusty main universe multiverse
deb http://kambing.ui.ac.id/ubuntu trusty-updates main universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main universe multiverse

Langkah selanjutnya silahkan buat file environment di dalam folder config kemudian masukkan codingan berikut ini.

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

Setelah selesai, langkah selanjutnya adalah lakukan konfigurasi pada file Vagrantfile seperti berikut.

Vagrant.configure(2) do |config|
  #konfigurasi box untuk sistem operasi ubuntu trusty 64 bit
  config.vm.box = "ubuntu/trusty64"

  config.vm.provider "virtualbox" do |vb|
    
     # konfigurasi virtual box dengan ram 1 GB
     vb.memory = "1024"
  end

  #konfigurasi provisioning
  config.vm.provision "shell", path: "install.sh"
end

Untuk menjalankan provisioning silahkan jalankan perintah berikut.

vagrant provision

Konfigurasi Jaringan

Agar kita dapat melakukan akses terhadap jaringan yang terdapat di dalam box vagrant maka kita harus melakukan konfigurasi jaringan. Konfigurasi yang akan kita lakukan adalah port forwarding artinya jaringan yang ada di dalam box akan kita forward ke komputer local berdasarkan port. Misalnya kita ingin melakukan akses port 80 pada vagrant box dengan menggunakan port 8080 pada komputer local. Silahkan buka file Vagrantfile kemudian lakukan konfigurasi seperti berikut ini.

Vagrant.configure(2) do |config|
  #konfigurasi box untuk sistem operasi ubuntu trusty 64 bit
  config.vm.box = "ubuntu/trusty64"

  config.vm.provider "virtualbox" do |vb|
    
     # konfigurasi virtual box dengan ram 1 GB
     vb.memory = "1024"
  end

  #konfigurasi provisioning
  config.vm.provision "shell", path: "install.sh"
  
  #konfigurasi network
  #port forwarding
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

Kemudian silahkan akses http://127.0.0.1:8080/ pada browser anda. Berikut adalah outputnya.

Untuk source code nya silahkan lihat di Belajar Vagrant. Sekian artikel mengenai belajar vagrant dan terima kasih :).