Press enter to see results or esc to cancel.

Puppet6 Server/Agent Yapılandırılması

Bu dökümanda Puppet6 ‘da nasıl Server/Agent yapılandırılması yapılır onu öğreneceğiz. Umarım faydalı bir yazı olur.

Puppet Master ve Nodelar arasında iletişimi HTTPS üzerinden (SSL kullanarak) gerçekleştirir. Puppet nodeların doğrulama ve kimliklendirme işlemleri için bu yapıyı kullanır. Çalışma mantığı, nodelar ilk master sunucuya geldiğinde (ilk iletişimde) eğer istek güvenliyse master sunucu nodelar için sertifika oluşturur ve node sertifikayı alır ve master/node arasında iletişim başlamış olur.

#Kurulum Gereksinimleri

. Debian 10
. Puppet6 sunucu > puppetserver.domain.com > 192.168.1.230
. Puppet6 node1 > node1.domain.com > 192.168.1.231
. Puppet6 node2 > node2.domain.com > 192.168.1.232

#Bazı tanımlamaları aşağıdaki gibi çağıracağız.

Sunucu : Puppet Sunucu, Puppet Server, Puppet Master Sunucu, Master, Sunucu
İştemci : Puppet Node, Puppet Client, Node, Client, İstemci

#Tüm test ortamındaki linux makinalar için hosts dosyası düzenlemesi aşağıdaki gibi yapılır.

echo -e "192.168.1.230\tpuppetserver.domain.com\n192.168.1.231\tnode1.domain.com\n192.168.1.232\tnode2.domain.com" >> /etc/hosts

Not : 8140. portunu güvenlik duvarından izin vermeyi unutmayın.

#Sunucu Kurulumu (Master)

wget https://apt.puppetlabs.com/puppet6-release-buster.deb && dpkg -i puppet6-release-buster.deb && apt-get update
apt-get install puppetserver

puppet.conf dosyası aşağıdaki gibi düzenlenir.

vim /etc/puppetlabs/puppet/puppet.conf
[main] certname = puppetserver.domain.com server = puppetserver.domain.com environment = production runinterval = 1h [master] dns_alt_names = puppetserver.domain.com environment_timeout = unlimited

# puppetserver servisi yeniden başlatılır.

systemctl restart puppetserver

Puppetserver JVM tabanlıdır. Ön tanımlı olarak java başlangıc ve maksimum hafıza ayarları 2Gb olarak ayarlanmıştır. Eğer ki sisteminiz 2Gb ‘dan küçük hafızaya sahipse aşağıdaki gibi hata alacaksınız.

Oct 16 10:35:54 puppetserver puppetserver[5399]: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000780000000, 2147483648, 0) failed; error='Not enough space' (errno=12) Oct 16 10:35:54 puppetserver puppetserver[5399]: # Oct 16 10:35:54 puppetserver puppetserver[5399]: # There is insufficient memory for the Java Runtime Environment to continue. Oct 16 10:35:54 puppetserver puppetserver[5399]: # Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory

Düzenlemek icin,

Xms: Başlangıç bellek havuzu
Xmx: Maksimum bellek havuzu

vim /etc/default/puppetserver
#Aşağıdaki satırda bulunan -Xms2g ve -Xmx2g kısımları değiştirilir.
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Benim sunucumda 1500Mb civarında ram olduğu için asağıdaki gibi bir değişiklik yaptım.

JAVA_ARGS="-Xms512m -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Değişiklikleri yaptıktan sonra servis aktif edilip yeniden başlatılır.

systemctl enable puppetserver.service

systemctl restart puppetserver.service

#İstemcilerin Kurulumu

wget https://apt.puppetlabs.com/puppet6-release-buster.deb && dpkg -i puppet6-release-buster.deb && apt-get update
apt-get install puppet-agent

/etc/puppetlabs/puppet/puppet.conf dosyası aşağıdaki gibi düzenlenir.

[main] certname = node1.domain.com server = puppetserver.domain.com environment = production runinterval = 1h

Değişiklikler yapıldıktan sonra puppet aktif edilip yeniden başlatılır.

systemctl enable puppet.service
systemctl restart puppet.service

Sunucu (Master) ve istemcilerdeki tüm yapılandırılmaları tamamladıysak aşağıdaki komutu master üstünde çalıştırdığımızda ayarladığımız istemcilerin master sunucuya bağlanma isteklerini göreceksiniz.

/opt/puppetlabs/bin/puppetserver ca list #Bu komut ile sadece gelen sertifika istekleri listelenir.

/opt/puppetlabs/bin/puppetserver ca list Requested Certificates: node1.domain.com (SHA256) C5:12:30:E0:C8:09:99:07:4A:76:AA:D4:DD:04:FC:2E:10:85:95:DF:A5:49:F2:18:D4:87:AE:D2:8A:4B:F7:31 node2.domain.com (SHA256) 66:67:19:D0:C2:EF:A9:D8:F2:76:74:DA:9E:68:75:8C:CC:11:00:91:73:AD:41:C3:77:16:40:16:20:00:37:56

Yukarıda gelen listede 2 tane imzalanmayı bekleyen node bulunmaktadır.

Gelen isteklerin hepsini imzalamak icin asağıdaki komut kullanılır. 

/opt/puppetlabs/bin/puppetserver ca sign --all Successfully signed certificate request for node1.domain.com Successfully signed certificate request for node2.domain.com

Eğer sadece tek bir node için sertifika imzalamak istiyorsak /opt/puppetlabs/bin/puppetserver ca sign –certname node1.domain.com komutu yeterlidir.

#CA alt komutları

. clean # Sertifikayı iptal edip master üstünden siler.
. generate # CA tarafından imzalanmış sertifika üretir.
. import # CA key ve sertifikaları import eder.
. list # Sertifika isteklerini listeler.
. revoke # Sertifikayı iptal eder.
. setup # Puppet sunucusu için root ve intermediate CA üretir.
. sign # Sertifikayı imzalar.

Puppet sunucuya bağlı nodeları görmek için /opt/puppetlabs/bin/puppetserver ca list –all komutunu kullanabilirsiniz.

#Master sunucudan node kaldırmak

/opt/puppetlabs/bin/puppetserver ca clean --certname client3.deneme.com

#Silinen node’un sertifikasını tekrar üretmek

Node üstünde:

systemctl stop puppet.service rm -rf /etc/puppetlabs/puppet/ssl systemctl start puppet.service

Master üstünde:

/opt/puppetlabs/bin/puppetserver ca list

Aşağıdaki gibi çıktı alıyorsanız imzalanmaya hazırdır.

Requested Certificates:
client3.deneme.com (SHA256) 73:44:60:1A:54:DC:D2:30:E5:F2:E4:87:ED:C4:57:5D:B8:E4:29:2F:29:C8:B2:08:4B:41:97:CA:C9:DD:CC:9A

Şimdilik bu kadar. Sevgiler.