1. Kuklaya Giriş
Sistem yöneticileri genellikle tekrar eden görevlerde sıkışıp kalır: paketleri yükseltmek, yapılandırma dosyalarını, sistem hizmetlerini, cron görevlerini, yeni yapılandırmaları eklemek, hataları düzeltmek vb. Bu görevler genellikle tekrarlayan ve verimsizdir, bu görevleri çözmenin ilk tepkisi onları otomatikleştirmek olur, böylece özel betikler ortaya çıkar. Ortamın karmaşıklığı nedeniyle, özel betikler ve uygulamalar tekrar tekrar geliştirilmekte ve birden fazla platforma uyması zordur; esneklik ve işlevsellik garantisi zor olduğundan, Puppet gibi otomatik yapılandırma yönetim araçları ortaya çıkmıştır.
Açık kaynak dünyasında, seçilebilecek birçok yapılandırma aracı var ve bu alandaki bazı önemli ürünler şunlardır:
Puppet (http://puppet.reductivelabs.com/): Ruby dilinde yazılmış ve C/S mimarisini kullanarak istemciyi bildirimci dilinde yapılandırmak için kullanılan bir yapılandırma yönetim aracı. Cfengine (http://www.cfengine.org): 1993'te piyasaya sürülen ilk açık kaynak yapılandırma araçlarından biri olan bu yapı, aynı zamanda eğitim kurumlarında genellikle kullanılan bir C/S mimaridir. LCFG(http://www.lcfg.org/): C/S mimarileri için yapılandırmaları tanımlamak için XML kullanan bir yapılandırma yönetim aracıdır. Bcfg2: Python dilinde yazılmış, hedef ana bilgisayarı yapılandırmak için spesifikasyonlar ve istemci yanıtları kullanan C/S mimarisi için bir yapılandırma yönetim aracı.
Bu belge, Puppet ile hostunuzu, uygulamalarınızı, arka plan programlarınızı ve çeşitli hizmetleri nasıl yöneteceğinizi açıklamaya ayrılmıştır.
Kukla Hakkında:
1. Puppet ne için kullanılır?
Puppet, C/S dağıtım mimarisine dayanan açık kaynaklı Ruby tabanlı bir sistem yapılandırma yönetim aracıdır. Ana geliştirici Luke Kanies'tir; bu lisans GPLv2 telif hakkı lisansını takip eder. 1997'den beri Kanies, UNIX sistem yönetiminde yer almakta ve Puppet'ın geliştirilmesi bu deneyimden kaynaklanmıştır. Mevcut yapılandırma araçlarından memnun kalmayan Kanies, 2001 ile 2005 yılları arasında Reductive laboratuvarında araçlar geliştirmeye başladı. Kısa süre sonra Reductive Labs amiral gemisi ürünü Puppet'ı piyasaya sürdü.
2. Pupput'un Özellikleri
Birçok sistem yapılandırma yönetim aracı, örneğin cfengine, çok benzer şekilde çalışır. Puppet'i benzersiz kılan nedir?
Puppet'ın sözdizimi, tüm hedef hostlarınızda ayrı bir kullanıcı betiği oluşturmanıza olanak tanır. Tüm hedef ev sahipleri, yerel sisteme uygulanan sözdizimi kullanılarak modülü sırayla yorumlayacak ve çalıştıracaktır. Örneğin, bu yapılandırma bir Red Hat sunucusunda çalıştırılıyorsa, useradd komutunu kullanarak bir kullanıcı oluşturun; Bu yapılandırma bir FreeBSD ana bilgisayarında çalıştırılırsa, adduser komutu kullanılır.
Puppet'ın bir diğer dikkat çekici yönü ise esnekliğidir. Açık kaynak yazılımın doğası gereği, Puppet'ın kaynak kodunu özgürce elde edebilirsiniz ve sorunlarla karşılaşırsanız ve imkanınız varsa, Puppet kodunu kendi ortamınıza göre değiştirebilir veya geliştirebilirsiniz. Ayrıca, topluluk geliştiricileri ve bağışçılar Puppet'ın yeteneklerini geliştirmeye devam ediyor. Büyük bir geliştirici ve kullanıcı topluluğu da Puppet için dokümantasyon ve teknik destek sağlamaya kendini adamıştır.
Puppet da kolayca ölçeklenebilir. Özel paket desteği ve özel sistem ortamı yapılandırmaları Puppet kurulumcuya hızlı ve kolay eklenebilir.
3. Kukla'nın çalışma modu
Puppet, kukla-sunucu paketini (Puppet master olarak bilinir) merkezi bir sunucuya yükleyen bir C/S mimarisi yapılandırma yönetim aracıdır. Yönetilmesi gereken hedef ana bilgisayara Puppet istemci yazılımını (Puppet Client olarak adlandırılır) yükleyin. İstemci Puppet master'a bağlandığında, Puppet master'da tanımlanan yapılandırma dosyası derlenir ve ardından istemcide çalıştırılır. Varsayılan olarak, her istemci her yarım saatte bir sunucu ile iletişim kurarak yapılandırma bilgilerinin güncellenmesini onaylar. Yeni yapılandırma bilgisi veya değiştiyse, yapılandırma yeniden derlenir ve her istemciye yürütülmek üzere yayımlanır. Ayrıca, her istemciyi yapılandırmaya zorlamak için sunucudaki yapılandırma bilgilerini aktif olarak tetikleyebilirsiniz. İstemcinin yapılandırma bilgileri değiştirilirse, sunucudan orijinal yapılandırmayı alarak düzeltebilir.
Yapılandırma Yönetimi: Kukla Kurulumu ve Kullanımı (1)
4. Puppet'ın geleceği
Son olarak, Puppet hâlâ geliştirilmekte olan genç bir araçtır. Kukla topluluğu hızla büyüyor ve birçok yeni fikir sürekli olarak dahil ediliyor; bu da her gün geliştirme, güncellemeler ve modüllerin sunulmasını teşvik ediyor.
2. Yapılandırma ve kurulum (Puppet 2.6.4 CentOS 5.4 kurulum):
Depoyu kukla sunucusu ve istemcide yapılandırmak: devirde -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm [root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo Eklemek: [kukla] isim=epel kukla baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ etkin=0 gpgcheck=0
Puppet.repo deposunu ekleyin: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [kuklalar] name=Puppet Labs Paketleri baseurl=http://yum.puppetlabs.com/base/ etkin=0 gpgcheck=0
Kukla Ustası Kurulumu: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Ev sahiplerini değiştirin ve aşağıdaki iki kaydı ekleyin: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com kukla 192.168.0.100 puppetclient.leju.com
Configuring Puppet: [root@puppetmaster ~]# cd /etc/kukla/ [root@puppetmaster kukla]# vi kukla.conf
[ana kaynak] # Kukla log dizini. # Varsayılan değer '$vardir/log'dur. logdir = /var/log/kukla
# Puppet PID dosyalarının saklandığı yer. # Varsayılan değer '$vardir/run'dur. rundir = /var/run/kukla
# SSL sertifikalarının saklandığı yer. # Varsayılan değer '$confdir/ssl'dir. ssldir = $vardir/ssl
[ajan] # Kuklanın sınıfların listesini sakladığı dosya # alınan yapılandırmayla ilişkilidir. Yüklenebilir # ayrı ''kukla'' çalıştırılabilir dosya '--loadclasses'' kullanılarak # seçeneği. # Varsayılan değer '$confdir/classes.txt'dir. classfile = $vardir/classes.txt
# Kuklanın yerel yapılandırmayı önbellediği yer. Bir # önbellek formatının otomatik eklendiğini gösteren uzantı ile bu uzantı vardır. # Varsayılan değer '$confdir/localconfig'dir. localconfig = $vardir/localconfig sunucu = puppetmaster.leju.com rapor = doğru dinle = doğru
[usta] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY otomatik işaret = doğru raporlar = depo
[root@puppetmaster kukla]# vi fileserver.conf [dosyalar] path /etc/puppet/files izin verin *
[modüller] izin verin *
[eklentiler] izin verin *
[root@puppetmaster kukla]# mkdir /etc/kukla/dosyalar
[root@puppetmaster kukla]# cd manifestoyor/ Site .pp oluşturun, bu kukla girişi yapılandırma dosyasıdır: [root@puppetmaster manifests]# vi site.pp "modules.pp" içe aktarın import "roles.pp" "nodes.pp" içe aktar
# Standart tipler için genel ayarlar Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Dosya { yedek => ana }
Modülleri içe aktarmak için modules.pp oluştur: [root@puppetmaster manifests]# vi modules.pp "test" içe aktarma
Sunucu rollerini tanımlamak için roles.pp oluştur: [root@puppetmaster manifests]# vi roles.pp class baseclass { Dahil Testi
}
Sunucu düğümlerini yapılandırmak için nodes.pp oluşturun: [root@puppetmaster manifests]# vi nodes.pp node 'basenode' { Base Class'ı içerir
}
node 'puppetclient.leju.com' basenode { tag("test")
}
node 'puppetmaster.leju.com' basenode inherits { tag("test")
}
[root@puppetmaster ortaya çıkıyor]# cd .. [root@puppetmaster kukla]# mkdir modülleri Bir test modülü oluşturun: [root@puppetmaster modülleri]# mkdir -p test/manifestolar/ [root@puppetmaster modülleri]# mkdir test/dosyalar/ [root@puppetmaster modülleri]# CD test/dosyalar/ [root@puppetmaster dosyaları]# vi test.txt Test hattı! [root@puppetmaster dosyaları]# cd .. /manifest ediyor/ İstemciye dosya teslim etmek için bir test sınıfı oluşturun: [root@puppetmaster manifest ediyor]# vi init.pp sınıf testi { file { "/tmp/test.txt": ensure => present, grup => "kök", owner => "kök", mode => "0644", kaynak => "puppet:///test/test.txt" }
}
Puppet Master'ın Başlatılması: [root@puppetmaster ortaya çıkıyor]# /etc/init.d/puppetmaster başlat 8140 portunun açık olduğundan emin olun.
Puppet client kurulumu: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" kukla kur
Ev sahiplerini değiştirin ve aşağıdaki iki kaydı ekleyin: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com kukla 192.168.0.100 puppetclient.leju.com
Kuklanın yapılandırılması: [root@puppetclient ~]# cd /vb/kukla/ [root@puppetclient kukla]# vi kukla.conf [ana kaynak] # Kukla log dizini. # Varsayılan değer '$vardir/log'dur. logdir = /var/log/kukla
# Puppet PID dosyalarının saklandığı yer. # Varsayılan değer '$vardir/run'dur. rundir = /var/run/kukla
# SSL sertifikalarının saklandığı yer. # Varsayılan değer '$confdir/ssl'dir. ssldir = $vardir/ssl
[ajan] # Kuklanın sınıfların listesini sakladığı dosya # alınan yapılandırmayla ilişkilidir. Yüklenebilir # ayrı ''kukla'' çalıştırılabilir dosya '--loadclasses'' kullanılarak # seçeneği. # Varsayılan değer '$confdir/classes.txt'dir. classfile = $vardir/classes.txt
# Kuklanın yerel yapılandırmayı önbellediği yer. Bir # önbellek formatının otomatik eklendiğini gösteren uzantı ile bu uzantı vardır. # Varsayılan değer '$confdir/localconfig'dir. localconfig = $vardir/localconfig
sunucu = puppetmaster.leju.com rapor = doğru dinle = doğru
[root@puppetclient kukla]# vi namespaceauth.conf [kukla ustası] izin puppetmaster.leju.com *.leju.com
[root@puppetclient kukla]# vi auth.conf Son satıra izin * ekleyin ...... Yol / Herhangi bir doğrulama izin verin *
[root@puppetclient kukla]# cd Kukla yürüt: [root@puppetclient ~]# kukla --noop --test --iz --hata hata ayıklama Eğer Puppet Master ayarlamıyorsa: autosign=true, Puppet Master'da çalıştırılmalıdır: [root@puppetmaster ~]# kukla sertifikası -l puppetclient.leju.com [root@puppetmaster ~]# kukla sertifikası -s puppetclient.leju.com Şöyle puppetclient.leju.com işaret edin. Sonra istemciye geri dönüp buradan çalıştırın: [root@puppetclient ~]# kukla --noop --test --iz --hata hata ayıklama Katıl --noop, yapılandırma aslında istemcide uygulanmayacak, çoğunlukla test için kullanılacak, yazıcıda hata olup olmadığını görmek ve hatasız çalıştırmak için: [root@puppetclient ~]# kukla --test --iz --hata hata ayıklama
Belgeyi görüntüleyin: [root@puppetclient ~]# ll /tmp/ toplam 8 -rw-r--r-- 1 kök kök 11 25 Şubat 22:35 test.txt Belge yayımlandı.
Ayrıca Puppet Master'ı da zorlamak mümkündür: [root@puppetmaster ~]# kukla tekme -d --ev sahibi puppetclient.leju.com Tetikleyici puppetclient.leju.com Statü kazanma Statü başarıdır puppetclient.leju.com çıkış kodu 0 ile bitti Bitti 0 döndürmek, istemcide kuklanın başarıyla tetiklendiğini gösterir.
Kuklayı otomatik başlatma için ayarlayın: chkconfig --level 2345 kukla üzerinde
Puppetmaster'ı Passenger kullanacak şekilde değiştirin Passenger ise, Apache'de Rails veya Rack uygulamalarını çalıştırmak için Apache 2.x'in bir uzantısıdır. puppetmaster, varsayılan olarak dosya hizmetleri sağlamak için WEBrick kullanır; eğer çok sayıda kukla istemciniz varsa, puppetmaster'ın dosya hizmeti performansı düşük olur, böylece puppetmaster daha sağlam hale gelir, bu yüzden dosya hizmetleri sağlamak için Apache'yi kullanın.
Kurulum: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems Yolcu 2.2.2 RHEL5 sorunsuz çalışıyor. Add foreman.repo repository: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [ustabaşı] name=Foreman kararlı deposu baseurl=http://yum.theforeman.org/stable gpgcheck=0 etkin=1 [root@puppetmaster ~]# yum install rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# rubygem-rack-1.0.1-1 [root@puppetmaster ~]# yolcu-install-apache2-module
Apache SSL modülünün kurulması: [root@puppetmaster ~]# Ne muyum mod_ssl
Puppet rack uygulamasını yapılandırmak için: mkdir -p /vb./kukla/rack/kuklamasterd/ mkdir /vb/kukla/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/ Chown Puppet /etc/Puppet/rack/Puppetmasterd/config.ru
[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 YolcuRuby /usr/bin/ruby YolcuMaxHavuzBoyut 30 YolcuHavuzBoş Zaman 1500 PassengerMaxRequests 1000 YolcuStatThrottleRate 120 RackAutoDetect Kapalı RaylarOtomatik Algılama Kapalı
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # Muhtemelen bu ayarları ayarlamak istersin Yolcu Yüksek Performans üzerinde YolcuMaxHavuzBoyut 12 YolcuHavuzBoş Zaman 1500 # PassengerMaxRequests 1000 YolcuStatThrottleRate 120 RackAutoDetect Kapalı RaylarOtomatik Algılama Kapalı
Dinle 8140
<VirtualHost *:8140> SSLEngine açık SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite HEPSİ:! ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # Apache CRL'de geçersiz imzalardan şikayet ederse, devre dışı bırakmayı deneyebilirsiniz # CRL kontrolü bir sonraki satıra yorum yaparak yapılıyor, ancak bu önerilmiyor. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient isteğe bağlı SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Aşağıdaki istemci başlıkları aynı yapılandırmanın Pound ile çalışmasına izin verir. RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /vb/kukla/rack/puppetmasterd/public/ RackBaseURI / <Dizin /vb./kukla/rack/kuklamasterd/> Seçenek Yok AlpermitOverride None Sipariş ver, reddet herkesten izin verin </Directory> </VirtualHost>
Puppetmaster yapılandırma dosyasını aşağıdaki iki satırı ekleyerek değiştirin: [root@puppetmaster ~]# vi /etc/kukla/kukla.conf [usta] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
/etc/sysconfig/puppetmaster'ı değiştir: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Sonuna şu satırı ekle: PUPPETMASTER_EXTRA_OPTS="--rapor mağazası" Hem ustabaşı hem de kukla paneline rapor vermeniz gerekiyorsa, aşağıdaki satırı ekleyin: PUPPETMASTER_EXTRA_OPTS="--rapor mağazası, ustabaşı, puppet_dashboard"
Kukla ustası hizmetini durdurun ve apaçi hizmetini başlatın: [root@puppetmaster ~]# /etc/init.d/Puppetmaster dur [root@puppetmaster ~]# /etc/init.d/httpd başla
Boot puppetmaster hizmetini başlatmaz, boot httpd servisini başlatır: [root@puppetmaster ~]# chkconfig --seviye 2345 kukla ustası kapalı [root@puppetmaster ~]# chkconfig --level 2345 httpd açık
8140 portunun etkin olduğundan emin olun: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 ::8140 :::* 9834/httpd DINLE
İstemci tarafında hata kaydının yazılıp yazmadığını test edin: [root@puppetclient ~]# kukla --test --iz --hata hata ayıklama |