Pengenalan Vagrant – (6) Provisioning dan Networking

Ini adalah seri ke 6 (terakhir) dari tutorial pengenalan Vagrant, berikut seri-seri lainnya:

  1. Pengenalan Vagrant – (1) apa dan untuk apa?
  2. Pengenalan Vagrant – (2) Instalasi
  3. Pengenalan Vagrant – (3) Tentang Boxes
  4. Pengenalan Vagrant – (4) Project, UP dan SSH
  5. Pengenalan Vagrant – (5) Suspend, Halt dan Destroy
  6. Pengenalan Vagrant – (6) Provisioning dan Networking

Pertama, jangan dipusingin judulnya ya… 🙂 sepertinya advance banget padahal pengaplikasinya sangat mudah.

Provisioning

Provisioning bisa kita artikan sebagai sebuah proses untuk mengkonfigurasi/nenginstall/mengupdate sebuah sistem operasi (dalam hal ini Box linux kita) dengan program-program yang diperlukan saat pertama kali box tersebut diaktifkan.

Misal kita sedang mengerjakan proyek berbasis PHP sehingga perlu PHP5, Apache webserver, MySql Database di dalam Box, normalnya kita login via SSH ke box dan menginstallnya satu-persatu. Tentunya sangat tidak effisien kalau harus melakukkannya berulang kali setiap kali anda menjalankan `vagrant up`.

Disinilah provisioning otomatis akan sangat membantu, bagaimana caranya? cara yang paling sederhana adalah anda cukup membuat sebuah file shell di direktori yang sama dengan file Vagrantfile, misal kita beri nama `provision.sh` dan didalamnya kita isi dengan perintah untuk menginstall Apache, MySQL dan PHP5.

#!/usr/bin/env bash

apt-get update

# install apache2
apt-get install -y apache2

# Kita ganti root direktori apache dari /var/www ke /vagrant (lokasi file kita)
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -fs /vagrant /var/www
fi

# install mysql
apt-get install mysql-server php5-mysql

# install PHP5
apt-get install php5 libapache2-mod-php5 php5-mcrypt 

File diatas hanya contoh sederhana, hanya untuk menunjukkan apa yang bisa kita lakukkan melalui fitur provisioning.

Setelah file tersebut kita buat, selanjutnya kita edit Vagrantfile supaya mengeksekusi file provision.sh saat menjalankan `vagrant up` menjadi seperti ini.

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # All Vagrant configuration is done here. The most common configuration
  # options are documented and commented below. For a complete reference,
  # please see the online documentation at vagrantup.com.

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "hashicorp/precise32"
  config.vm.provision :shell, path: "provision.sh"
...
...

Kita tambahkan baris baru: config.vm.provision :shell, path: “provision.sh”.

Selanjutnya untuk menjalankan file provisioner kita, tinggal tambahkan parameter `–provision` ketika menjalankan `vagrant up`, maka otomatis setelah box aktif script akan dieksekusi dan semua perintah di dalamnya akan dijalankan.

Catatan: Ketika pertama kali anda menjalankan `vagrant up`, maka vagrant akan otomatis menjalankan script provisioner, setelah itu provisioner tidak akan dijalankan kecuali anda menggunakan parameter –provision.

Saat anda login via SSH, anda akan mendapati Box sudah terinstall Apache, Mysql dan PHP5. Praktis bukan?

Untuk lebih lengkap mengenai metode-metode provisioning yang lebih advance, silahkan merujuk ke dokumentasinya.

Sekarang Apache sudah terinstall, bagaimana caranya untuk mengakses dari broser lokal kita?. Untuk bisa mengakses port 80 (webserver) dari box, kita perlu mengkonfigurasi sedikit di Networkingnya.

Networking

Kita perlu memberitahu Vagrant bahwa kita ingin mengakses port 80 di dalam box supaya bisa kita akses di port 8080 misalnya di komputer local. Vagrant melakukkannya dengan port forwarding.

Caranya edit kembali Vagrantfile dan tambahkan baris berikut: `config.vm.network :forwarded_port, guest: 80, host: 8080`.

Sekarang jalankan perintah `vagrant reload` (apabila box sudah aktif) atau `vagrant up` (box belum aktif). Maka ketika anda mengakses http://localhost:8080, sebenarnya ada mengakses web server Apache di box kita.

Untuk lebih detail mengenai networking di Vagrant silahkan baca-baca di sini.

Jadi demikianlah sedikit tutorial yang saya buat untuk memperkenalkan Vagrant, mudah-mudahan bisa membuat hidup anda sebagai developer lebih mudah.

Vagrant adalah topik yang sangat luas, jadi tidak mungkin saya bahas semuanya disini. Mudah-mudahan seri Pengenalan Vagrant ini bisa membantu anda mulai menggunakan Vagrant. Selamat mencoba, dan jangan lupa bagi pengalaman anda setelah menggunakan Vagrant.

5 Replies to “Pengenalan Vagrant – (6) Provisioning dan Networking”

Leave a Reply

Your email address will not be published. Required fields are marked *