Bash Provisioning With Vagrant

Introduction

Sebagai DevOps, kita tidak terlepas dengan yang namanya Provisioning, saya tidak akan menjelaskan lebih detail makna provisioning itu sendiri, tapi disini kita akan mencoba bash provisioning pada Virtual Mechine menggunakan Vagrant. Langsung saja, siapkan 1 vm atau lebih mengguanan vagrant.

mkdir -p ~/Vagrant/vagrant-provbash
cd ~/Vagrant/vagrant-provbash

Vagrant File

Lalu buatlah sebuah vagrantfile dengan config:

# Inisialisasi Vagrantfile configuration
Vagrant.configure("2") do |config|

  # definisikan vm01
  config.vm.define "vm01" do |vm01|
      vm01.vm.box = "ubuntu/xenial64"
      vm01.vm.hostname = "serverku"
      vm01.vm.network :private_network, ip: "10.3.3.15"
      vm01.vm.provision "shell", path: "lamp.sh"
      vm01.vm.provider "virtualbox" do |vb|
        vb.memory = "512"
      end
      vm01.vm.network "forwarded_port", guest: 80, host:3000
  end

end

Penjelasan :

Provisioning LAMP STACK

Pada case kali ini kita akan coba provisioning LAMP STACK menggunakan bash. Buatlah file lamp.sh pada directory yg sama, isikan script berikut:

#!/bin/bash

export DEBIAN_FRONTEND="noninteractive"
password="toor"
sudo su
apt update
debconf-set-selections <<< "mysql-server mysql-server/root_password password $password"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $password"
apt install -y apache2 mysql-server libapache2-mod-fastcgi php7.0-fpm php7.0 
echo "<?php phpinfo(); ?>" > /var/www/html/index.php
a2enmod actions

rm /etc/apache2/sites-available/000-default.conf 
wget https://gist.githubusercontent.com/zetc0de/b0e54218db3f77fc328218f3a20894f1/raw/73a13cd240e3630edaf57975c36737ed5f29e832/000-default.conf -O /etc/apache2/sites-available/000-default.conf ufw allow http

systemctl restart apache2
systemctl restart mysql 
echo -e "-------------------------------"
echo -e "-[ https://zetc0de.github.io ]-"
echo -e "-------------------------------"

Jangan lupa untuk memberi hak akses execute pada filenya :

chmod +x lamp.sh

Lalu jalankan vm01 dan pastikan vm01 telah running dengan perintah:

vagrant up vm01
vagrant status vm01

Kemudian saatnya provisioning, gunakan perintah:

vagrant provisioning vm01

Maka akan terlihat proses provisioning vm01 dengan script bash. Dengan provisioning kita dimudahkan untuk mensetup banyak server dengan sekali kerja. Bayangkan jika anda diminta untuk mensetup 1000 server? Menarik bukan? :)

Result

Anda dapat melihat hasil dari provisioning tadi dengan mengakses 127.0.0.1:3000 di browser anda.

Terlihat apache,mysql,dan php-fpm kita sudah dalam kondisi running. :)