
vagrant di OS X
Kesulitan yang biasa dihadapi ketika kita membutuhkan satu mesin untuk menjalankan satu aplikasi tertentu, misal mencoba aplikasi yang selama ini berjalan di php5.4 dan ingin diporting ke php5.6, dengan menggunakan mesin development biasa kemungkinan bakal sulit untuk merubah konfigurasi dan bahkan bisa merusak sistem.
Kali ini Aitech mencoba memperkenalkan teknologi vagrant dan virtualbox sehingga memungkinkan kita memiliki beragam mesin untuk development sebelum dipindahkan ke server produksi, sebelum memulai pastikan OS X nya sudah terinstall XCode.
Kebutuhan
Instalasi Homebrew dan Cask
Untuk mengunduh Homebrew dan melakukan instalasi, jalankan perintah berikut:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Menginstal Cask juga sangat gampang 🙂
brew install caskroom/cask/brew-cask
Setelah sukses terinstall dengan perintah diatas, lakukan pengecekan terhadap hasil instalasi:
brew doctor
Untuk mencari Aplikasi
brew search
Untuk menginstall
brew install <Nama-App>
listing seluruh aplikasi dari Homebrew
brew list
Menghapus aplikasi yang sudah terinstall
brew remove <application-name>
Melakukan update terhadap Homebrew
brew update
Vagrant & Virtualbox
Untuk menginstall Virtualbox, Aitech menggunakan Homebrew dan Cask yang sudah terinstall sebelumnya, atau bisa juga dengan mengunduh image Virtualbox secara langsung.
1 2 3 4 5 |
AcehMacClub:~ avudz$ brew cask install virtualbox ==> We need to make Caskroom for the first time at /opt/homebrew-cask/Caskroom ==> We'll set permissions properly so we won't need sudo in the future ==> Downloading http://download.virtualbox.org/virtualbox/5.0.6/VirtualBox-5.0.6-103037-OSX.dmg ######################################################################## 100.0% |
Setelah proses instalasi Virtualbox selesai, sekarang menginstall vagrant untuk mengelola virtual mesin yang akan kita buat nantinya.
1 2 |
AcehMacClub:~ avudz$ brew cask install vagrant ==> Downloading https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.4.dmg |
Selanjutnya mengecek dan melihat vagrant yang sudah terinstall.
1 2 |
AcehMacClub:~ avudz$ vagrant -v Vagrant 1.7.4 |
Menginstall Local DNS
Bagi developer kadang terlihat sangat tidak keren jika membuat url menggunakan IP Address, seperti http://127.0.0.1:8081 – Maka disini perlu DNS local yang bisa menerjemahkan IP Address menjadi domain-name yang bisa dengan mudah diingat. Untuk membuat Local DNS dengan vagrant, salah satunya adalah menggunakan Landrush yang secara gratis boleh diunduh dan diterapkan di server. Landrush ini akan membaca file konfigurasi dari Vagrant yaitu: Vagrantfile – dan membuatkan sebuah domain sesuai yang akan didefinisikan dalam Vagrantfile.
Untuk menginstall Landrush, cukup dengan perintah berikut:
$ vagrant plugin install landrush
Membuat Virtual Mesin
Setelah seluruh perkakas kebutuhan dasar sudah terinstall, sekarang Aitech akan membuatkan direktori tempat bekerja dan membuat Vagrantfile yang akan digunakan untuk konfigurasi Virtual Machine.
1 2 3 4 5 6 |
mkdir Vagrant cd Vagrant git clone https://github.com/crowefoote/vagrant-lamp.git vagrant-lamp cd vagrant-lamp mv Vagrantfile old.Vagrantfile vi Vagrantfile |
Keterangan:
Direktori untuk menyimpan VM ada di
~/Vagrant – perintah git clone gunanya untuk melakukan kloning ke tautan github yang sudah lengkap dengan konfigurasi LAMP Stack. Sedangkan isi dari Vagrantfile yang sudah Aitech modif sebagai berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = 'ubuntu/trusty64' if !File.dirname(File.expand_path(__FILE__)).scan(/\.vm$/i).empty? config.vm.hostname = File.basename(File.dirname(File.expand_path(__FILE__))); end if Vagrant.has_plugin?('landrush') config.landrush.host 'alias1.vagrant-lamp.vm', '172.28.128.3' end config.vm.provision :shell, :path => "bootstrap.sh" config.vm.provision "shell", inline: <<-SHELL sudo apt-get update rm -rf /var/www && ln -s /vagrant /var/www SHELL end |
Mari bersama kita lihat kode diatas:
1 |
config.landrush.host 'alias1.vagrant-lamp.vm', '172.28.128.3' |
secara default, landrush akan membuat TLD .vm dan mengikuti working directory tempat kita menyimpan Vagrantfile, misal ditempat Aitech menyimpan Vagrantfile adalah vagrant-lamp, maka domain yang kita gunakan nantinya adalah http://vagrant-lamp.vm – namun terkadang, 1 VM ini juga digunakan untuk sub-domain lainnya, sehingga perlu juga ditambahkan alias host seperti pada command tersebut, nantinya developer akan mengakses dengan alamat lainnya misalkan : http://alias1.vagrant-lamp.vm
1 |
rm -rf /var/www && ln -s /vagrant /var/www |
Perintah diatas akan menghapus direktori web root /var/www dan kemudian melakukan mounting /vagrant menjadi /var/www – /vagrant ini adalah direktori virtual yang merupakan Alias dari direktori asli tempat kita bekerja, yaitu ~/Vagrant/vagrant-lamp – gunanya kedepan kita tidak perlu melakukan SSH / SFTP ke server hanya untuk menambah atau mengedit script.
Untuk menjalankan VM dengan vagrant, ketikkan perintah berikut ini:
1 2 3 4 5 6 7 8 9 10 |
AcehMacClub:ubuntu-apache avudz$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'ubuntu/trusty64' could not be found. Attempting to find and install... default: Box Provider: virtualbox default: Box Version: >= 0 ==> default: Loading metadata for box 'ubuntu/trusty64' default: URL: https://atlas.hashicorp.com/ubuntu/trusty64 ==> default: Adding box 'ubuntu/trusty64' (v20151007.0.0) for provider: virtualbox default: Downloading: https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20151007.0.0/providers/virtualbox.box default: Progress: 0% (Rate: 190k/s, Estimated time remaining: 0:37:18) |
perintah diatas membutuhkan beberapa menit/jam tergantung dari koneksi untuk mengunduh VM ubuntu/trusty64 dan juga instalasi LAMP Stack nya. Jika semua proses sudah selesai, kita bisa SSH ke dalam VM dengan mengetik perintah :
vagrant ssh
Check Local Resolver
Untuk memastikan Local DNS sudah berjalan, bisa menggunakan perkakas dig ataupun landrush sebagai berikut :
1 2 3 4 |
AcehMacClub:vagrant-lamp avudz$ vagrant landrush list vagrant-lamp.vm 172.28.128.3 3.128.28.172.in-addr.arpa alias1.vagrant-lamp.vm alias1.vagrant-lamp.vm 172.28.128.3 |
landrush list akan mengeluarkan output daftar domain/host yang sudah ditambahkan melalui Vagrantfile. landrush secara default menjalankan name server pada port 10053, pastikan ketika menggunakan dig menggunakan port 10053 tersebut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
AcehMacClub:vagrant-lamp avudz$ dig -p 10053 @localhost alias1.vagrant-lamp.vm ; <<>> DiG 9.8.3-P1 <<>> -p 10053 @localhost alias1.vagrant-lamp.vm ; (3 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55616 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;alias1.vagrant-lamp.vm. IN A ;; ANSWER SECTION: alias1.vagrant-lamp.vm. 0 IN A 172.28.128.3 ;; Query time: 50 msec ;; SERVER: 127.0.0.1#10053(127.0.0.1) ;; WHEN: Mon Oct 12 00:42:40 2015 ;; MSG SIZE rcvd: 56 |
Membuat VirtualHost
Pada direktori utama, pastikan sudah membuat index.html dan membuat direktori baru untuk digunakan oleh webroot alias1.vagrant-lamp.vm – seperti berikut :
1 2 3 4 5 6 |
├── Vagrantfile ├── alias1 │ └── index.html ├── bootstrap.sh ├── index.html └── readme.md |
dengan command vagrant ssh – masuk ke dalam server dan ketik perintah berikut untuk membuat virtualhost alias1.vagrant-lamp.vm :
1 2 3 |
cd /etc/apache2/sites-available cp -ax 000-default.conf alias1.vagrant-lamp.vm.conf vi alias1.vagrant-lamp.vm.conf |
isikan berkas alias1 sebagai berikut:
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName alias1.vagrant-lamp.vm ServerAdmin webmaster@localhost DocumentRoot /var/www/alias1 ErrorLog ${APACHE_LOG_DIR}/alias1_error.log CustomLog ${APACHE_LOG_DIR}/alias1_access.log combined </VirtualHost> |
Aktifkan site Alias1 dengan membuat simbolik link dari sites-available ke sites-enabled :
1 2 |
ln -s /etc/apache2/sites-available/alias1.vagrant-lamp.vm.conf /etc/apache2/sites-enabled/alias1.vagrant-lamp.vm.conf service apache2 restart |
selanjutnya tinggal diarahkan browser ke http://vagrant-lamp.vm dan juga virtualhost http://alias1.vagrant-lamp.vm untuk mengetahui bahwa kedua site tersebut sudah aktif.
Selamat mencoba 🙂 Jika mengalami kendala, jangan sungkan untuk klik menu Kontak !!
Leave A Comment