Sebelumnya saya sudah menulis tulisan tentang automation tool : Puppet (Baca : Automation Tool : Puppet). Kali ini saya akan memberitahukan bagaimana cara untuk instalasi puppet master & puppet agent di Linux Centos 7. Instalasinya saja, automatisasinya nanti karena saya belum begitu mengerti bagaimana cara automatisasinya 😀 .
Persiapan
Hal pertama yang perlu teman-teman siapkan tentu saja komputer dengan sistem operasi Centos 7. Minimal teman-teman memiliki 2 komputer dengan sistem operasi Centos 7, atau jika teman-teman hanya memiliki 1 komputer dengan 1 spesifikasi besar, bisa juga membuat 2 VM Centos 7 guna uji coba yang akan dilakukan. Saya sendiri melakukan uji coba kali ini menggunakan Virtualbox dengan 2 VM Centos 7 didalamnya.
Apabila tidak ingin menginstal VM Centos 7 dari awal, teman-teman bisa menggunakan image VM yang sudah disediakan oleh OSBoxes https://www.osboxes.org/centos/, pilih Centos 7 yang terbaru. Spesifikasi minmal yang dibutuhkan adalah sebagai berikut
- VM Master
RAM : 4 GB
CPU : 2 Core - VM Agent
RAM : 2 GB
CPU : 1 Core
Pastikan Centos 7 master & agent sudah bisa diakses terminal-nya dan memiliki akses internet serta berikan IP address statik untuk kedua VM. Setelah itu baru proses instalasi Puppet bisa dilakukan.
Instalasi Puppet Master
- Catat IP static serta full hostname yang akan diberikan untuk master & agent (Full hostname memiliki format “nama.domain.com”). Misalnya disini saya menggunakan IP 192.168.11.71 untuk server master & IP 192.168.11.72 untuk komputer agent, serta hostname master.puppet.local untuk server master & agent.puppet.local untuk komputer agent
- Pastikan server master dengan komputer agent bisa berkomunikasi dengan perintah “ping <IP server/komputer tujuan>”, dari server master ke komputer agent maupun sebaliknya
- Matikan service firewall dengan perintah berikut, supaya komunikasi master & agent lancar
# systemctl stop firewalld # systemctl disable firewalld
- Ubah hostname server master sesuai dengan yang sudah teman-teman tentukan menggunakan perintah berikut
# hostnamectl set-hostname master.puppet.local # hostname -f master.puppet.local
- Edit file /etc/hosts dengan file editor lalu tambahkan baris berikut sesuai dengan IP serta hostname master & agent. Hal ini dilakukan supaya master mengenali agentnya dengan hostname, bukan IP karena nantinya komunikasi master & agent akan dilakukan menggunakan SSL yang memerlukan hostname supaya dianggap trusted
192.168.11.71 master.puppet.local master 192.168.11.72 agent1.puppet.local agent1
(Opsional), pilihan lainnya untuk memenuhi kebutuhan tersebut adalah menjadikan server master sebagai DNS server, jadi nantinya nama-nama hostname agent cukup ditambahkan di server master saja, tidak perlu ditambahkan secara manual di setiap agent. Apabila teman-teman menggunakan DNS server untuk uji coba kali ini, teman-teman bisa mengikuti tutorial berikut dan menyesuaikan record-record DNS dengan hostname-hostname & IP-IP server master ataupun komputer agent. https://colamen.id/konfigurasi-dns-server-centos-7/
- Menambahkan repository puppet dengan perintah berikut
# rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm Retrieving https://yum.puppet.com/puppet6-release-el-7.noarch.rpm warning: /var/tmp/rpm-tmp.QWnGXp: Header V4 RSA/SHA256 Signature, key ID ef8d349f: NOKEY Preparing... ################################# [100%] Updating / installing... 1:puppet6-release-6.0.0-10.el7 ################################# [100%] # yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.telkomuniversity.ac.id * epel: ftp.riken.jp * extras: mirror.telkomuniversity.ac.id * updates: mirror.telkomuniversity.ac.id repo id repo name status !base/7/x86_64 CentOS-7 - Base 10,070 *!epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,352 !extras/7/x86_64 CentOS-7 - Extras 397 !puppet6/x86_64 Puppet 6 Repository el 7 - x86_64 227 !updates/7/x86_64 CentOS-7 - Updates 862 repolist: 24,908
- Instal puppet master dengan perintah berikut
# yum install puppetserver -y
- Edit file /etc/puppetlabs/puppet/puppet.conf lalu tambahkan baris berikut sesuai dengan hostname server master
[main] certname = master.puppet.local server = master.puppet.local
- Jalankan service puppetserver dan enable supaya otomatis start setelah booting dengan perintah berikut
# systemctl start puppetserver # systemctl enable puppetserver # systemctl status puppetserver puppetserver.service - puppetserver Service Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-07-02 14:16:59 WIB; 1h 23min ago Process: 1842 ExecStop=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver stop (code=exited, status=0/SUCCESS) Process: 1900 ExecStart=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver start (code=exited, status=0/SUCCESS) Main PID: 1907 (java) Tasks: 48 (limit: 4915) CGroup: /system.slice/puppetserver.service └─1907 /usr/bin/java -Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -XX:OnOutOfMemoryError=kill -9 %p -cp /opt/puppetlabs/server/apps/puppetserver/puppet-ser... Jul 02 14:16:45 master.puppet.local systemd[1]: Starting puppetserver Service... Jul 02 14:16:59 master.puppet.local systemd[1]: Started puppetserver Service.
Instalasi Puppet Agent
- Matikan service firewall dengan perintah berikut
# systemctl stop firewalld # systemctl disable firewalld
- Ubah hostname server agent sesuai dengan yang sudah teman-teman tentukan menggunakan perintah berikut
# hostnamectl set-hostname agent1.puppet.local # hostname -f agent1.puppet.local
- Edit file /etc/hosts dengan file editor lalu tambahkan baris berikut sesuai dengan IP serta hostname master & agent
192.168.11.71 master.puppet.local master 192.168.11.72 agent1.puppet.local agent1
- Komunikasi puppet master dengan agent menggunakan port tcp 8140 dengan perintah telnet berikut
# telnet master.puppet.local 8140 Trying 192.168.11.71... Connected to master.puppet.local. Escape character is '^]'. ^]quit telnet> quit Connection closed.
- Menambahkan repository puppet dengan perintah berikut
# rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm
- Instal puppet agent dengan perintah berikut
# yum install puppet-agent -y
- Edit file /etc/puppetlabs/puppet/puppet.conf lalu tambahkan baris berikut sesuaikan certname dengan hostname agent dan server dengan hostname master
[main] certname = agent1.puppet.local server = master.puppet.local
- Jalankan service puppet dan enable supaya otomatis start setelah booting dengan perintah berikut
# systemctl start puppet # systemctl enable puppet # systemctl status puppet puppet.service - Puppet agent Loaded: loaded (/usr/lib/systemd/system/puppet.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2020-07-02 14:22:47 WIB; 1h 44min ago Main PID: 2109 (puppet) CGroup: /system.slice/puppet.service └─2109 /opt/puppetlabs/puppet/bin/ruby /opt/puppetlabs/puppet/bin/puppet agent --no-daemonize Jul 02 14:22:47 agent1.puppet.local systemd[1]: Started Puppet agent
Uji Coba Koneksi Master & Agent
- Testing komunkasi puppet master dan puppet agent dengan perintah berikut dari komputer agent
# puppet agent --test Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for agent1.puppet.local Info: Certificate Request fingerprint (SHA256): 7C:96:6D:30:09:ED:9D:15:F3:BD:99:23:36:20:0D:5D:D0:11:35:DE:66:EE:41:F1:EC:40:DF:5D:72:7F:41:24 Info: Certificate for agent1.puppet.local has not been signed yet Couldn't fetch certificate from CA server; you might still need to sign this agent's certificate (agent1.puppet.local). Exiting now because the waitforcert setting is set to 0.
Hasil perintah diatas pasti akan menghasilkan error yang menyatakan bahwa koneksi tidak bisa dilakukan karena tidak bisa mendapatkan certificate SSL dari server Master. Hal ini normal terjadi dikarenakan server master perlu memberikan approval terhadap request certificate yang diminta oleh agent
- Jalankan perintah berikut dari server master untuk melihat request certificate dari agent
# puppetserver ca list Requested Certificates: agent1.puppet.local (SHA256) 7C:96:6D:30:09:ED:9D:15:F3:BD:99:23:36:20:0D:5D:D0:11:35:DE:66:EE:41:F1:EC:40:DF:5D:72:7F:41:24
- Jalankan lagi perintah berikut dari server master untuk approve certificate request dari agent
# puppetserver ca sign --certname agent1.puppet.local Successfully signed certificate request for agent1.puppet.local
- Jalan kembali perintah untuk testing dari komputer agent
# puppet agent --test Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for agent1.puppet.local Info: Certificate Request fingerprint (SHA256): 7C:96:6D:30:09:ED:9D:15:F3:BD:99:23:36:20:0D:5D:D0:11:35:DE:66:EE:41:F1:EC:40:DF:5D:72:7F:41:24 Info: Downloaded certificate for agent1.puppet.local from https://master.puppet.local:8140/puppet-ca/v1 Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for agent1.puppet.local Info: Applying configuration version '1593681534' Notice: Applied catalog in 0.01 seconds
Sekarang hasil testing sudah berhasil
- Lalu bagaimana jika agent yang akan di uji coba banyak? Apakah harus berulang kali melakukan approve manual dari server master? Tentu saja tidak, karena teman-teman bisa juga approve request certificate dari agent dengan hostname yang sudah didefinisikan di file autosign.conf
- Edit atau buat file autosign.conf pada direktori /etc/puppetlabs/puppet/ dan tambahkan hostname agent ataupun domain
*.puppet.local
Dengan mendefinisikan *.puppet.local di file autosign.conf, maka semua request certificate dari agent dengan hostname yang menggunakan domain puppet.local akan otomatis di approve oleh master
- Setelah itu restart service puppetserver untuk menerapkan autosign.conf
# systemctl restart puppetserver