Headlines News :
Home » , » Manajemen Konfigurasi dan Otomasi Server DataCenter dengan PUPPET

Manajemen Konfigurasi dan Otomasi Server DataCenter dengan PUPPET

Written By Unknown on Wednesday, September 30, 2015 | 2:47 PM

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.
Share this post :

Post a Comment

 
Copyright © 2011. COMASTNET - All Rights Reserved