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.
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 :).