Instal Puppet 6 Master & Agent di Centos 7

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

Leave a Reply

Your email address will not be published. Required fields are marked *