Headlines News :

POPULAR POST

Cara menambah fitur sms verifikasi pada form registrasi member web anda


Apa yang dimaksud dengan SMS Verifikasi?
 
SMS Verifikasi adalah fitur sms memberikan kepastian bahwa nomor handphone yang digunakan oleh seorang User tersebut benar-benar aktif. Ketika sebuah form yang ada pada aplikasi atau web diisi bersama nomor handphone yang digunakan User, SMS Verifikasi pun dikirimkan kepada nomor handphone yang di inputkan User pada form tersebut. SMS Verifikasi berisikan kode verifikasi dimana sang User dapat mengkonfirmasikannya dengan mengetikannya pada laman pengecekan/verifikasi.
Kenapa harus menggunakan SMS Verifikasi?
Apabila anda memiliki web dan ingin memastikan member yang ada pada website anda dapat dihubungi untuk beberapa keperluan dan memastikan akun user yang akan mendaftar bukan bot yang mencoba untuk menyerang website anda.

Siapa saja yang menggunakan SMS Verifikasi?
1. Google
selain dikenal melalui search enginenya, google juga memiliki fitur email bernama GMAIL yang pada tahun 2013 berjumlah sekitar 425 juta di dunia. GMAIL sendiri menggunakan verifikasi via sms ketika user pertama kali mendaftar untuk mendapatkan akun emailnya dan sekarang menerapkan sistem keamanan ganda berupa aplikasi bernama Google authenticator dan SMS gateway sebagai kunci untuk dapat masuk ke akun google anda.
2. Twitter
 Selain Google twitter juga menerapkan sistem keamanan ganda untuk para pengguna twitter agar dapat mengakses twitter.
3. Whatsapp. Messaging App dengan jumlah terbanyak di dunia pada tahun ini dengan pengguna sekitar 350 juta orang jatuh pada whatsapp, Whatsapp adalah aplikasi online messaging multi platform yang dapat berjalan pada Android OS, iOs, Windows Mobile OS dan Symbian Os. Dengan jumlah pengguna sebanyak itu, Whatsapp menerapkan sistem SMS Verifikasi untuk memastikan Akun yang baru akan dibuat memang terbukti valid.

Nah, terbukti layanan-layanan tersebut menggunakan fitur SMS Verifikasi untuk memastikan keabsahan nomor handphone penggunanya. Kini, bagi anda yang memiliki  website dengan hak akses membership juga dapat menggunakan fitur SMS Verifikasi juga. Sebelum mulai menggunakan fitur ini pada website anda, ada baiknya anda memahami terlebih dahulu cara kerja dari SMS Verifikasi. Berikut Penjelasannya :
Cara kerja :
1. User mengisi form pendaftaran dan menginputkan nomor handphone asli untuk selanjutnya dikirimkan SMS Verifikasi.
2. User mendapatkan SMS berisi Kode Verifikasi yang selanjutnya akan di isi pada halaman web untuk melengkapi registrasi.
3. User mengisi kolom verifikasi dengan kode yang tertera pada SMS dan kemudian melengkapi  registrasi sekaligus resmi menjadi member yang terdaftar. Apabila kode verifikasi yang diketikan oleh user tidak sesuai dengan apa yang ada pada isi SMS Verifikasi, maka User harus menginputkan kembali kode yang benar.
Berikut ini adalah tutorial untuk menambahkan fitur sms verifikasi berupa kode verifikasi yang akan diterima oleh calon member dan selanjutnya akan di inputkan pada kolom verifikasi untuk melengkapi registrasi dan menjadi member yang terdaftar.
1. Untuk bisa memiliki fasilitas SMS pada web atau blog Anda harus mempunyai SMS gateway berfunsi sebagai pengirim SMS secara otomatis begitu ada pengunjung yang melakukan pendaftaran. Namun jangan khawatir Anda tidak perlu membeli software SMS gateway. Saya menggunakan SMS gateway online, silahkan daftar disini GRATIS!

2. Buatlah halaman html bernama reg.html dan isikan dengan script berikut :





Untitled Document




 

Form Registrasi Member


 
 

   
      Nama :
     
   
   
      Alamat :
     
   
   
      Email :
     
   
   
      *No. Handphone :
     
   
   
      Username :
     
   
   
      Password :
     
   
   
       
     
     
   
 
  *Silahkan masukkan nomor handphone yang anda gunakan untuk menerima kode verifikasi.




3.Berikut bentuk tampilan dari halaman reg.html



4.Kalau sudah, buat halaman php dan beri nama send.php dan isikan dengan script berikut.


$nohp=$_POST['nohp'];
$kode="182654"; //isikan sesuai dengan keinginan anda, tapi jangan masukkan huruf. hanya digit angka.
// Script Kirim SMS Api Zenziva
$userkey="userkeyanda"; // userkey lihat di zenziva
$passkey="passkeyanda"; // set passkey di zenziva
$message="Silahkan masukkan kode $kode pada kolom verifikasi untuk melengkapi registrasi anda. terima kasih.";

$url = "http://zenziva.com/apps/smsapi.php";
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, 'userkey='.$userkey.'&passkey='.$passkey.'&nohp='.$nohp.'&pesan='.urlencode($message));
curl_setopt($curlHandle, CURLOPT_HEADER, 0);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
curl_setopt($curlHandle, CURLOPT_POST, 1);
$results = curl_exec($curlHandle);
curl_close($curlHandle);

header("location: inputver.html");
?>

Halaman send.php berfungsi untuk mengirimkan sms verifikasi sekaligus mengarahkan user ke halaman input kode verifikasi.
 
5. Kemudian untuk membuat halaman dimana user menginputkan kode verifikasi, buatlah halaman html dan beri nama inputver.html. kemudian isikan dengan kode berikut :



Untitled Document




  SMS Verifikasi telah dikirim.
  Silahkan input kode verifikasi pada kolom dibawah ini :
 
 
   
   
 



6. Untuk melakukan verifikasi apakah kode yang dimasukkan benar atau salah, buatlah halaman php bernama verify.php dan isikan dengan script berikut :

$kode=$_POST['kodever'];
if($kode==182654) //isikan angka kode yang sesuai dengan yang ada pada halaman send.php
{
header("location: dasbor.php");
}
else{
header("location: cobalagi.php");
}
?>

7. Buatlah halaman cobalagi.php untuk menampilkan user salah menginputkan kode verifikasi dan isikan script berikut :



Untitled Document




  Kode yang anda masukkan salah.
  Silahkan input kembali kode verifikasi anda :
 
 
   
   
 



8. Dan untuk menampilkan halaman dasbor user apabila user memasukkan kode verifikasi dengan benar, maka buat halaman bernama dasbor.php dan inputkan script berikut :



registrasi berhasil




  home
  profil
  forum
  logout

Selamat datang, anda telah berhasil registrasi dan terdaftar sebagai member kami



Userkey dan passkey dapat dilihat di halaman dashboard zenziva setelah melakukan login.




Calon member akan menerima SMS berupa kode verifikasi setelah melakukan registrasi. Setelah Calon member mendaftar pada halaman reg.html, otomatis Calon member mendapatkan sms berupa kode verifikasi. Dan pada inputver.html, User menginputkan kode verifikasi sesuai dengan apa yang ada pada isi sms verifikasi dan kemudian melengkapi registrasi juga menjadi member baru yang terdaftar. Sekarang website Anda telah dilengkapi dengan fitur SMS.

Membangun High Available Server dengan teknik Failover Clustering

Sebelum memulai, ada baiknya penulis menjabarkan secara singkat definisi dan fungsi dari Heartbeat dan DRBD, karena software open source inilah yang kali ini akan kita gunakan untuk membangun High Available Server, Juga apa yang dimaksud dengan clustering dan Failover Clustering, dan bagaimana cara kerjanya.



Heartbeat

Sumber gambar: Linux-Ha Project
Heartbeat adalah Linux High Available yang menggunakan teknik cluster, yang bisa digunakan untuk  pada beberapa sistem operasi seperti Linux, FreeBSD, OpenBSD, Solaris, MacOS. yang mengunggulkan kehandalan, ketersediaan, dan serviceability (RAS). Proyek dari Linux-HA yang berlisensi GPL. Berikut fitur yang di usung oleh Heartbeat:
  1. Tidak ada jumlah maksimum tetap untuk jumlah node yang digunakan,
  2. Resource dapat secara otomatis restart atau pindah ke node lain pada kegagalan,
  3. Bisa menghapus node gagal dari cluster,
  4. Kebijakan yang canggih untuk manajemen resource, antara sumber daya dan kendala,
  5. Memungkinkan kebijakan yang berbeda berdasarkan waktu,
  6. Sudah menyediakan berbagai macam script (untuk Apache, DB2, Oracle, PostgreSQL dll).
DRBD
Sumber gambar: LINBIT
DRBD (Distributed Replicated Block Device) adalah sistem penyimpanan didistribusikan untuk platform GNU / Linux. Terdiri dari modul kernel, aplikasi userspace beberapa manajemen dan beberapa script shell dan biasanya digunakan pada cluster High Availability (HA). DRBD mirip dengan RAID 1, kecuali bahwa ia berjalan melalui jaringan.adalah sistem distribusi storage untuk GNU/Linux. DRBD mengacu pada baik perangkat lunak (kernel modul dan userspace yang terkait), dan juga untuk spesifik perangkat blok logis dikelola oleh perangkat lunak. DRBD bisa digunakan untuk replikasi:

  1. Conventional file system,
  2. Shared disk file system seperti GFS or OCFS2,
  3. Logical block device lainnya (seperti yang digunakan LVM, misalnya),
  4. aplikasi apa saja yang membutuhkan akses langsung ke block device.
DRBD berbasis cluster sering digunakan untuk menambahkan replikasi sinkron dan High Availability untuk file server, database relasional (seperti MySQL), dan beban kerja lainnya. Inilah mengapa penulis menggunakan DRBD sebagai replicator untuk database yang penulis gunakan adalah MySQL.

    Clustering
Dalam dunia komputer yang dimaksud dengan Server Clustering adalah menggunakan lebih dari satu server yang menyediakan redundant interconnections, sehingga user hanya mengetahui ada satu sistem server yang tersedia dan komputer client tidak menyadari jika terjadi kegagalan pada sistem server karena tersedianya server sebagai redundant atau backup. Clustering Server dapat digunakan untuk Load Balancing  (biasanya aktif-aktif ) cluster ataupun Failover clustering (biasanya aktif-pasif).
Failover Clustering
Failover clustering menyediakan solusi high availability server dimana jika terjadi kegagalan pada sistem hardware seperti power supply mati yang menyebabkan server mati total maka server lain anggota cluster yang akan mengambil alih fungsi dari server yang mati, sehingga komputer client tidak mengetahui jika terjadi kegagala pada server, karena proses yang dilakukan pada server yang gagal atau mati akan dilanjutkan oleh server backup. Konsep konfigurasi failover cluster adalah membuat satu server sebagai master server dan server yang lain menjadi slave server dimana saat server dalam keadaan normal master server menangani semua request dari client. Slave server akan mengambil alih tugas master server apabila master server tidak berfungsi atau mati.

Implementasi

Setelah memahami cara kerja, saatnya kita implementasi, aplikasi yang akan kita buat HA adalah samba.
Berikut beberapa persiapan yang harus diperhatikan sebelum membangun Failover Clustering:
  1. Backup dahulu semua data yang ada ke dalam media selain yang akan kita gunakan.
  2. Usahakan besar HDD di kedua server sama, atau jika tidak masing-masing HDD memiliki jumlah block yang sama.
  3. Jika menggunakan firewall kita harus membuka port 7788 (DRBD) dan 694 (Heartbeat) agar cluster bisa berjalan dengan baik.
  4. Pastikan service samba terinstall dan berjalan dengan baik.
Berikut spesifikasi informasi sistem yang penulis gunakan:


1. 2 buah Server x3250 M2
Sumber gambar: Penulis
                             Spesifikasi Perangkat Keras Server IBM system x3250 M2

No.
Alat-alat
Spesifikasi
1.
Processor
Intel Core2Duo E4600 @2.40GHz
2.
Memory
4 GHz DDR2
3.
Harddisk
ST3320/13AS 320 GB-WDC WD2500YS-23SHB0 250 GB
4.
NIC
Gigabit Ethernet
5.
VGA
VGA ATI ES1000
2. 2 Buah Switch
Sumber gambar: Penulis
Spesifikasi Switch SR216
No.
Keterangan
1. 24 port 10/100 RJ-45 ports dengan support automatic MDI/MDI-X cable detection
2. Kapasitas switching sebesar 4,8 Gbps
3. dengan support automatic MDI/MDI-X cable detection
4. Menggunakan advanced store-and-forward packet switching untuk optimalisasi data transfer

Berikut gambar rancangan H.A:
Sumber gambar: Penulis
  1. Setting di kedua server yang akan dijadikan server dengan IP sebagai berikut:
No.
Hosname
eth0
eth1
1.
server-a
192.168.0.1
10.0.0.1
2.
server-b
192.168.0.2
10.0.0.2

  1. Pertama install Heartbeat
[root@server-a ~]# yum -y install heartbeat
  1. Konfigurasi Heartbeat di kedua server seperti dibawah ini :
[root@server-a~]# vi /etc/ha.d/ha.cf
       Logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node server-a
node server-b

[root@server-a~]# vi /etc/ha.d/haresources
Server-a 192.168.0.100 drbddisk::testing Filesystem::/dev/drbd0::/mnt/drbd::ext3 samba

[root@server-a~]# vi /etc/ha.d/authkeys
auth 1
1 md5 S1mp@naku

4. Ubah permission authkeys dulu:
[root@ server-a ~]# /chmod 600 /etc/ha.d/authkeys
alasanya adalah karena ini adalah authkeys, dimana dengan keys ini, host dapat connect ke dalam cluster kita, ini bahaya sekali. saya belum ada penerapan enkripsi disini.

5. Jalan heartbeat di kedua server / node, server a dan server b:
[root@ server-a ~]# /etc/rc.d/init.d/heartbeat start
Starting High-Availability services:
[  OK  ]

[root@ server-a ~]# chkconfig heartbeat on

6. Instalasi DRBD :
[root@ server-a ~]# yum install drbd82 kmod-drbd82

7. Buat partisi harddisk di kedua node sesuai kebutuhan. Ukurannya harus sama, tidak boleh berbeda. Software partisi dapat menggunakan LVM, gparted, fdisk atau parted. Pastikan partisinya belum diisi Filesystem terlebih dahulu, biarkan dalam format raw. Disini saya berasumsi sudah dibuat partisi LVM, /dev/VolGroup00/voldrbd/

8. Konfigurasi DRBD di kedua server seperti dibawah ini:
[root@ server-a ~]# vi /etc/drbd.conf
global {usage-count ask;}
common { syncer { rate 10M; } }
resource DEPHUB {
   protocol C;
      handlers {
              pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
              pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
          local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
              outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
       }
     startup {
             wfc-timeout  40;
            degr-wfc-timeout 120;    # 2 minutes.
     }
     disk { on-io-error   detach; }
      net {
           timeout       60;    #  6 seconds  (unit = 0.1 seconds)
           connect-int   10;    # 10 seconds  (unit = 1 second)
           ping-int      10;    # 10 seconds  (unit = 1 second)
           max-buffers     2048;
           max-epoch-size  2048;
           cram-hmac-alg "md5";
           shared-secret "tes_DRBD";
           after-sb-0pri disconnect;
           after-sb-1pri disconnect;
           after-sb-2pri disconnect;
           rr-conflict disconnect;
        }
        syncer {
                  rate 10M;
                 al-extents 257;
       }
        on server-a {
                 device     /dev/drbd0;
                 disk         /dev/VolGroup00/voldrbd;
                 address    192.168.0.1:7788;
                 meta-disk  internal;
        }
       on server-b {
               device    /dev/drbd0;
               disk      /dev/VolGroup00/voldrbd;
               address   192.168.0.2:7788;
               meta-disk internal;
        }
}

9. Jalankan service DRBD
[root@server-a ~]# /etc/init.d/drbd start

10. Set partisi menjadi partisi primary:
[root@server-a ~]# drbdadm -- --overwrite-data-of-peer primary all

11. Buat filesystem:
[root@server-a ~]# mkfs.ext3 /dev/drbd0

12. Mount filesystem:
[root@server-a ~]# mkdir /mnt/drbd/[root@server-a ~]# mount /dev/drbd0 /mnt/drbd
[root@server-a ~]# cd /mnt/drbd/| touch contohfile.txt

13. Di server-b atau secondary, lakukan langkah berikut ini:
Membuat metadata:
[root@server-b ~]# drbdadm create-md all
[root@server-b ~]# /etc/init.d/drbd start

Setelah dijalankan, partisi secondary ini akan memulai singkronisasi atau mengkopi data dari node primary ke node secondary, tunggu hingga selesai. Untuk melihat proses singkronisasi tersebut, digunakan perintah:
[root@server-b ~]# cat /proc/drbd
Proses akan selesai Jika terlihat seperti ini:
Connected  Primary/Secondary  UpToDate/UpToDate  C  /mnt/drbd/  ext3


Uji Coba
Berikut bagaimana penulis menguji coba failover cluster, mungkin akan sadis =D, tapi beginilah seharusnya mengetest sebuah sistem sebelum launch ke production =D. Sebelumnya masukan file mp3 atau film kedalam mount samba.

akses mount point samba yaitu /mnt/drbd dari linux, kemudian mainkan file mp3 tersebut, setelah berjalan beberapa saat, 



1. skenario pertama: 
kill -9 PID samba, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.

2. skenario ke dua:
cabut saja kabel server-a kita dari switch, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.


3. skenario ke tiga:
shutdown server-a, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
4. skenario ke empat:
shutdown server-a, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.
5. skenario ke lima:
Cabut power server-a =D, sambil mendengarkan dengan seksama, apakah lagu berhenti, ada suaranya sejenak berhenti, atau suara jalan mulus. Tapi perlu di catat, jangan gunakan aplikasi yang mencache dahulu file mp3 kita.

Sekian artikel ini, biar dokumen lama, semoga bisa berguna.

Manajemen Konfigurasi dan Otomasi Server DataCenter dengan PUPPET

Puppet Fundamental / Pengenalan Puppet
Puppet adalah open source configuration management tool, digunakan untuk mengatur konfigurasi pada sebuah host, baik berupa file, packages, maupun users secara sentralisasi. Penulis menggunakan puppet untuk mengatur semua server yang penulis tangani, yang jumlahnya begitu banyak, kalau hanya 1-10 mungkin bisa, tapi kalau sudah ratusan beda cerita, karena tidak mungkin penulis mengkonfigurasi satu-persatu server tersebut, karena selain tidak efisien, besar peluang terjadinya human error.
sumber gambar: puppetlabs

Sebagai gambaran saja, jika penulis menginginkan perubahan pada sebuah konfigurasi, tapi di semua server, misalkan penulis ingin menambahkan rules pada pf (packet filter), tinggal merubah rules pada puppet server atau puppetmaster, maka semua host yang terdaftar sebagai puppet client, rules pf akan dirubah oleh puppet client.

Pengguna Puppet
Puppet biasa digunakan pada environment bersekala dari kecil hingga besar berikut sebagian daftar client yang mungkin tidak asing bagi kita menggunakan puppet:
  1. Oracle,
  2. Google,
  3. Wikimedia Foundation,
  4. Twitter,
  5. Dell,
  6. Rackspace,
  7. Zynga,
  8. New York Stock Exchange, 
  9. Disney, 
  10. Citrix Systems, 
  11. Los Alamos National Laboratory, 
  12. Stanford University,
  13. Nokia,
  14. dll.
Bisa bayangkan bagaimana system bisa bekerja pada sekala sebesar perusahaan diatas, bahkan perusahaan seperti VMware, Google Ventures, and Cisco rela Invest di Puppet Labs.


Puppet Platform
Puppet bisa bekerja pada lintas platform berikut daftar sistem operasi yang di dukung pada saat penulisan:

Linux:
  1. Red Hat Enterprise Linux,
  2. CentOS
  3. Scientific Linux,
  4. Oracle Linux,
  5. Debian,
  6. Ubuntu,
  7. Fedora,
  8. SUSE Linux Enterprise Server,
  9. Gentoo Linux,
  10. Mandriva Corporate Server,
  11. ArchLinux.
BSD:
  1. FreeBSD,
  2. OpenBSD.
Unix lainnya:
  1. Mac OS X,
  2. Oracle Solaris,
  3. AIX,
  4. HP-UX.
Windows:
  1. Windows Server 2003,
  2. Windows 2008.
Puppet bekerja menggunakan metode client-server walaupun bisa stand-alone, semua konfigurasi tersentralisasi pada puppet server, semua sistem operasi yang di dukung puppet, bisa di jalankan sebagai puppet server, kecuali windows, hanya bisa di jadikan sebagai puppet client. Jadi kita bisa jadikan OpenBSD sebagai puppetmaster dan Solaris sebagai puppet clientnya.

Cara kerja Puppet
Puppet bekerja dengan metode client-server, ini berarti sebuah client (puppet client) atau lebih akan menghubungi puppet server, bisa jadi lebih dari satu puppet server. Secara priodik (defaultnya 30 menit) puppet client akan menghubungi puppet server, untuk mendownload konfigurasi terbaru dari puppet server disebut dengan catalog dan mensikronisasikan dengan konfigurasi yang ada, apabila ditemukan perubahan, maka puppet akan merubahnya. Setelah itu puppet client, mengirimkan laporan ke puppet server, mengenai ada tidaknya perubahan, jika ada perubahan maka di laporkan pula bagian mana yang berubah.

Berikut diagram yang menunjukan bagaimana alur data pada puppet:



sumber gambar: puppetlabs


Fungisionalitas pada puppet dibangun dengan lapisan-lapisan layer yang terpisah, setiap layer bertanggung jawab terhadap sistem, masing-masing bertanggung jawab untuk aspek tetap dari sistem, dengan kontrol ketat terhadap bagaimana informasi lewat di antara lapisan:


sumber gambar: puppetlabs



Resource yang bisa di manajemen puppet
Pada saat penulisan artikel ini puppet sudah bisa memanajemen resource dibawah ini:
  • augeas
  • computer
  • cron
  • exec
  • file
  • filebucket
  • group
  • host
  • interface
  • k5login
  • macauthorization
  • mailalias
  • maillist
  • mcx
  • mount
  • nagios_command
  • nagios_contact
  • nagios_contactgroup
  • nagios_host
  • nagios_hostdependency
  • nagios_hostescalation
  • nagios_hostextinfo
  • nagios_hostgroup
  • nagios_service
  • nagios_servicedependency
  • nagios_serviceescalation
  • nagios_serviceextinfo
  • nagios_servicegroup
  • nagios_timeperiod
  • notify
  • package
  • resources
  • router
  • schedule
  • scheduled_task
  • selboolean
  • selmodule
  • service
  • ssh_authorized_key
  • sshkey
  • stage
  • tidy
  • user
  • vlan
  • yumrepo
  • zfs
  • zone
  • zpool
Sebagai contoh, bila kita ingin membuat cron, tinggal membuat kelasnya di puppet server, maka cron akan terbentuk dengan sendirinya di semua host yang terdaftar sebagai puppet client. Dan perlu diingat tidak sebatas list diatas puppet bisa di manajemen, tergantung dari kreatifitas dan kebutuhan kita sendiri.
Demonstrasi
Di sini kita tidak membicarakan bagaiamana instalasi maupun penjelasan mengenai tools, tapi penulis hanya ingin menunjukan bagaimana puppet bekerja. Penjelasan seperti instalasi, konfigurasi, dan lain-lain bisa di lihat setelah artikel ini. Tujuan dari demonstrasi ini adalah agar pembaca melihat garis besarnya saja, dan demo ini di implementasikan di localhost bukan dengan metode client-server.
Yang akan penulis lakukan adalah instalasi puppet, kemudian kita akan membuat puppet script, yang melakukan instalasi paket httpd, meng-enable-nya, mengecek proses httpd, jika mati, akan di hidupkan puppet. FYI: penulis juga menambahkan epel repository.

Instalasi Puppet
##############

[root@labs01.unixhat ~]# yum install puppet -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: centos.biz.net.id
 * epel: epel.idrepo.or.id
 * extras: centos.biz.net.id
 * updates: centos.biz.net.id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package puppet.noarch 0:2.6.13-2.el6 will be installed
--> Processing Dependency: ruby(abi) = 1.8 for package: puppet-2.6.13-2.el6.noarch
--> Processing Dependency: ruby >= 1.8.1 for package: puppet-2.6.13-2.el6.noarch
--> Processing Dependency: facter >= 1.5 for package: puppet-2.6.13-2.el6.noarch
--> Processing Dependency: ruby-shadow for package: puppet-2.6.13-2.el6.noarch
--> Processing Dependency: ruby-augeas for package: puppet-2.6.13-2.el6.noarch
--> Processing Dependency: ruby(selinux) for package: puppet-2.6.13-2.el6.noarch
--> Processing Dependency: /usr/bin/ruby for package: puppet-2.6.13-2.el6.noarch
--> Running transaction check
---> Package facter.noarch 0:1.6.4-1.el6 will be installed
---> Package libselinux-ruby.i686 0:2.0.94-5.2.el6 will be installed
---> Package ruby.i686 0:1.8.7.352-4.el6_2 will be installed
---> Package ruby-augeas.i686 0:0.3.0-2.el6 will be installed
--> Processing Dependency: augeas-libs >= 0.5.1 for package: ruby-augeas-0.3.0-2.el6.i686
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.8.0) for package: ruby-augeas-0.3.0-2.el6.i686
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.1.0) for package: ruby-augeas-0.3.0-2.el6.i686
--> Processing Dependency: libaugeas.so.0 for package: ruby-augeas-0.3.0-2.el6.i686
--> Processing Dependency: libaugeas.so.0(AUGEAS_0.11.0) for package: ruby-augeas-0.3.0-2.el6.i686
---> Package ruby-libs.i686 0:1.8.7.352-4.el6_2 will be installed
--> Processing Dependency: libreadline.so.5 for package: ruby-libs-1.8.7.352-4.el6_2.i686
---> Package ruby-shadow.i686 0:1.4.1-13.el6 will be installed
--> Running transaction check
---> Package augeas-libs.i686 0:0.9.0-1.el6 will be installed
---> Package compat-readline5.i686 0:5.2-17.1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                   Arch                            Version                                    Repository                        Size
=============================================================================================================================================================
Installing:
 puppet                                    noarch                          2.6.13-2.el6                               epel                             811 k
Installing for dependencies:
 augeas-libs                               i686                            0.9.0-1.el6                                base                             311 k
 compat-readline5                          i686                            5.2-17.1.el6                               base                             128 k
 facter                                    noarch                          1.6.4-1.el6                                epel                              66 k
 libselinux-ruby                           i686                            2.0.94-5.2.el6                             base                              97 k
 ruby                                      i686                            1.8.7.352-4.el6_2                          updates                          532 k
 ruby-augeas                               i686                            0.3.0-2.el6                                epel                              20 k
 ruby-libs                                 i686                            1.8.7.352-4.el6_2                          updates                          1.6 M
 ruby-shadow                               i686                            1.4.1-13.el6                               epel                              11 k

Transaction Summary
=============================================================================================================================================================
Install       9 Package(s)

Total download size: 3.6 M
Installed size: 11 M
Downloading Packages:
(1/9): augeas-libs-0.9.0-1.el6.i686.rpm                                                                                               | 311 kB     00:00  
(2/9): compat-readline5-5.2-17.1.el6.i686.rpm                                                                                         | 128 kB     00:00  
(3/9): facter-1.6.4-1.el6.noarch.rpm                                                                                                  |  66 kB     00:00  
(4/9): libselinux-ruby-2.0.94-5.2.el6.i686.rpm                                                                                        |  97 kB     00:00  
(5/9): puppet-2.6.13-2.el6.noarch.rpm                                                                                                 | 811 kB     00:02  
(6/9): ruby-1.8.7.352-4.el6_2.i686.rpm                                                                                                | 532 kB     00:01  
(7/9): ruby-augeas-0.3.0-2.el6.i686.rpm                                                                                               |  20 kB     00:00  
(8/9): ruby-libs-1.8.7.352-4.el6_2.i686.rpm                                                                                           | 1.6 MB     00:05  
(9/9): ruby-shadow-1.4.1-13.el6.i686.rpm                                                                                              |  11 kB     00:00  
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                        296 kB/s | 3.6 MB     00:12  
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key)
 Package: centos-release-6-2.el6.centos.7.i686 (@base/$releasever)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
 Userid : EPEL (6)
 Package: epel-release-6-5.noarch (installed)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : compat-readline5-5.2-17.1.el6.i686                                                                                                        1/9
  Installing : ruby-libs-1.8.7.352-4.el6_2.i686                                                                                                          2/9
  Installing : ruby-1.8.7.352-4.el6_2.i686                                                                                                               3/9
  Installing : facter-1.6.4-1.el6.noarch                                                                                                                 4/9
  Installing : ruby-shadow-1.4.1-13.el6.i686                                                                                                             5/9
  Installing : libselinux-ruby-2.0.94-5.2.el6.i686                                                                                                       6/9
  Installing : augeas-libs-0.9.0-1.el6.i686                                                                                                              7/9
  Installing : ruby-augeas-0.3.0-2.el6.i686                                                                                                              8/9
  Installing : puppet-2.6.13-2.el6.noarch                                                                                                                9/9

Installed:
  puppet.noarch 0:2.6.13-2.el6                                                                                                                            

Dependency Installed:
  augeas-libs.i686 0:0.9.0-1.el6    compat-readline5.i686 0:5.2-17.1.el6    facter.noarch 0:1.6.4-1.el6           libselinux-ruby.i686 0:2.0.94-5.2.el6
  ruby.i686 0:1.8.7.352-4.el6_2     ruby-augeas.i686 0:0.3.0-2.el6          ruby-libs.i686 0:1.8.7.352-4.el6_2    ruby-shadow.i686 0:1.4.1-13.el6

Complete!
[root@labs01.unixhat ~]#


Mengecek apakah sudah terinstall atau belum paket httpd, jika tidak ada output, berarti paket httpd belum terinstall.


[root@labs01.unixhat ~]# rpm -qa|grep httpd


Sekarang mari kita membuat puppet script yang mudah
[root@labs01.unixhat ~]# vi apply.pp
dengan isi sebagai berikut:


package { "httpd":
                ensure => present,
}
service { "httpd":
                enable    => true,
                ensure    => running,
        }

Mari kita eksekusi script yang telah kita buat, jika tidak ada masalah dalam tahap instalasi atau puppet script kita maka akan tampak seperti berikut:

[root@labs01.unixhat ~]# puppet apply apply.pp
notice: /Stage[main]//Package[httpd]/ensure: created
notice: /Stage[main]//Service[httpd]/ensure: ensure changed 'stopped' to 'running'
notice: Finished catalog run in 111.43 seconds
[root@labs01.unixhat ~]#

Tampaknya proses berjalan lancar, mari kita cek hasil dari puppet:

[root@labs01.unixhat ~]# rpm -qa|grep httpd
httpd-2.2.15-15.el6.centos.i686
yups, paket httpd sudah terinstal, mari kita cek coba mematikan proses httpdnya
[root@labs01.unixhat ~]# /etc/init.d/httpd status
httpd (pid  5119) is running...
[root@labs01.unixhat ~]# /etc/init.d/httpd stop
Stopping httpd:                                            [  OK  ]
[root@labs01.unixhat ~]# /etc/init.d/httpd status
httpd is stopped
[root@labs01.unixhat ~]# 
ok, service httpd sudah di matikan. Kita coba jalankan script puppet yang telah kita buat tadi, jika memang benar, maka service akan di hidupkan kembali oleh puppet.
[root@labs01.unixhat ~]# puppet apply apply.pp 
notice: /Stage[main]//Service[httpd]/ensure: ensure changed 'stopped' to 'running'
notice: Finished catalog run in 1.30 seconds
[root@labs01.unixhat ~]# 
Nampak output puppet, memberi kabar gembira, mari kita cek:
[root@labs01.unixhat ~]# /etc/init.d/httpd status
httpd (pid  5586) is running...
[root@labs01.unixhat ~]# 
Yups terjalan berjalan dengan baik, puppet menghidupkan service httpd, sekarang mari kita me-disable httpd pada chkconfig:
[root@labs01.unixhat ~]# chkconfig --list|grep httpd
httpd           0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@labs01.unixhat ~]# chkconfig httpd off
[root@labs01.unixhat ~]# chkconfig --list|grep httpd
httpd           0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@labs01.unixhat ~]# 
Mari kita jalankan kembali script puppet, dan kita lihat hasilnya:
[root@labs01.unixhat ~]# puppet apply apply.pp 
notice: /Stage[main]//Service[httpd]/enable: enable changed 'false' to 'true'
notice: Finished catalog run in 1.44 seconds
[root@labs01.unixhat ~]# chkconfig --list|grep httpd
httpd           0:off 1:off 2:on 3:on 4:on 5:on 6:off
OK, puppet berhasil meng-enble runlevel untuk 2,3,4,5. yang tadi sebelumnya mati.
Bahkan bila kita menghapus paket httpd, maka puppet akan menginstallnya kembali, mari kita lihat:
[root@labs01.unixhat ~]# yum remove httpd -y
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security, versionlock
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i686 0:2.2.15-15.el6.centos will be erased
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================
 Package                           Arch                             Version                                          Repository                         Size
=============================================================================================================================================================
Removing:
 httpd                             i686                             2.2.15-15.el6.centos                             @base                             2.8 M
Transaction Summary
=============================================================================================================================================================
Remove        1 Package(s)
Installed size: 2.8 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : httpd-2.2.15-15.el6.centos.i686                                                                                                           1/1 
Removed:
  httpd.i686 0:2.2.15-15.el6.centos
Complete!
[root@labs01.unixhat ~]# rpm -qa|grep httpd # kosong
[root@labs01.unixhat ~]# puppet apply apply.pp 
err: /Stage[main]//Service[httpd]/ensure: change from stopped to running failed: Could not start Service[httpd]: Execution of '/sbin/service httpd start' returned 1:  at /root/apply.pp:7
notice: /Stage[main]//Package[httpd]/ensure: created
notice: Finished catalog run in 40.80 seconds
[root@labs01.unixhat ~]# rpm -qa|grep httpd
httpd-2.2.15-15.el6.centos.i686
[root@labs01.unixhat ~]# 
Yups, Alhamdulillah selesai sudah penjelasan puppet sebagai server automasi dan manajemen konfigurasi, penulis berharap pembaca sekarang mengerti mengapa puppet menjadi server automasi di datacenter berbagai belahan dunia. Untuk lebih dalam mengenai puppet, pembaca bisa mengikuti terus artikel berikutnya.
 
Copyright © 2011. COMASTNET - All Rights Reserved