A: puppet英語原意是木偶,在這裏,pupet指的是一個開源的管理軟件.用於集中管理服務器.由於該軟件管理服務器的方式相似於操縱木偶,因此軟件的名字叫作puppet.node
A:若是你是linux unix freebsd 或者 mac os 系統管理員,puppet對你頗有用,若是你是windows用戶,暫時對你沒用. 若是你管理着上成百上千臺的服務器,可是還在用 for 循環加 ssh或者 expect 的方式來管理服務器,那麼你應該嘗試下puppet了.除非你想成天在不一樣的服務器上登入登出. 而不考慮擠出點時間來玩或者學習新的東西.linux
A:是的,徹底沒有問題,google 也用puppet管理了超過6000臺的蘋果桌面系統,下面是官方的puppet用戶列表. who using puppet shell
A: puppet客戶端和服務器端是經過ssl鏈接來保證安全性,ssl鏈接用到的證書是x.509證書。 puppet會本身生成證書。無論是在客戶端仍是在服務器端。
ssl在鏈接的時候,會對比證書裏面的CN名字是否和主機名匹配,若是不匹配就會報證書驗證錯誤。這是最多見的問題。vim解決這個問題的方法就是,首先固定機器的主機名,而後刪除puppet已經本身生成的ssl目錄,例如/etc/puppet/ssl. 從新運行puppet來生成新的證書。不一樣方法安裝的puppet,ssl的路徑不同,在debian下面是/var/lib/puppet/sslwindows
同時在服務器端和客戶端都這樣操做。centos
所謂固定機器的主機名,就是保證主機名配置文件裏面配置的主機名(debian 是/etc/hostname,centos 是在/etc/sysconfig/network裏面的HOSTNAME) 和 執行 hostname命令打印出來的主機名一致。安全
標準Puppet Enterprise 部署包括:ruby
由許多Puppet 管理組成的 虛擬/物理機 節點。服務器
至少一個配置好節點的Puppet管理服務端。dom
至少有一個控制檯。支持PuppetDB
要求有本身的DNS主機,要求有正反向解析。
官方文檔廢話太多了。不列了,說乾貨。
準備兩個虛擬機,一臺是管理端,一臺是客戶端。
這裏準備兩臺centos6虛擬機作實驗。
Puppet對Rubu的支持
Ruby version puppet2.6 puppet2.7 puppet3.0
1.85 支持 支持 不支持
1.8.7 支持 支持 支持
1.9.3 不支持 不支持 支持
1.9.0/1/2 不支持 不支持 不支持
1.8.1/6 不支持 不支持 不支持
安裝Ruby Ruby-libs Ruby-shadow,進行用戶和組管理
安裝Facter Puppet Pupper-server
設置主機名、域名解析或者指定hosts
經過命令/etc/init.d/puppetmaster start 啓動server或者以非進程的方式啓動server
經過命令puppet master --no-daemonize --verbose查看相關日誌與輸出
在客戶端配置文件Puppet.conf制定server端,在終端運行puppet agent -test或直接運行puppet agent --test --server.domain.com 與master交互完成簽名認證
在server上配置節點信息,告訴客戶端要作什麼
檢查語法是否錯誤,採用puppet parser validate test.pp
客戶端再次運行配置 puppet agent --test
puppet官方源http://yum.puppetlabs.com
使用源時肯定系統版本,以更改baseurl
[root@localhost ~]# cat /etc/redhat-release CentOS release 6.4 (Final) [root@localhost ~]# vim /etc/yum.repos.d/puppet.repo [puppet-labs] name=puppet-labs-repo baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/ gpgcheck=0 enabled=1 [root@localhost ~]# yum list ... [root@localhost ~]# yum -y install ruby ruby-libs ruby-shadow ... [root@localhost ~]# ruby -v ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] 首先安裝puppetlabs-release.noarch [root@localhost ~]# yum install puppetlabs-release.noarch ... 服務端安裝 [root@localhost ~]# yum install puppet-server ... 客戶端安裝 [root@localhost ~]# yum install puppet 而後在服務端和客戶端改寫hosts [root@localhost ~]# vim /etc/hosts 192.168.181.42 puppet.domain.com 192.168.181.43 agent.domain.com
配置防火牆
iptables -A INPUT -p tcp --dport 8140 -j ACCEPT
配置主機配置文件
服務端 [root@localhost ~]# vim /etc/puppet/manifests/site.pp node default { file { "/tmp/puppettest1.txt": content => "hello,First Puppet test"; }} [root@localhost ~]# service puppetmaster start
客戶端 [root@agent ~]# service puppet start 客戶端發起驗證 [root@agent ~]# puppet agent --server puppet.domain.com --test Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for agent.domain.com Info: Certificate Request fingerprint (SHA256): 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00 Info: Caching certificate for ca Exiting; no certificate found and waitforcert is disabled
服務端 [root@localhost ~]# puppet cert --list "agent.domain.com" (SHA256) 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00 [root@localhost manifests]# puppet cert sign agent.domain.com Notice: Signed certificate request for agent.domain.com Notice: Removing file Puppet::SSL::CertificateRequest agent.domain.com at '/var/lib/puppet/ssl/ca/requests/agent.domain.com.pem' 簽署成功
客戶端 驗證配置 [root@agent ~]# puppet agent --test --server puppet.domain.com Info: Caching certificate for agent.domain.com Info: Caching certificate_revocation_list for ca Info: Caching certificate for agent.domain.com Info: Retrieving plugin Info: Caching catalog for agent.domain.com Info: Applying configuration version '1386938219' Notice: /Stage[main]/Main/Node[default]/File[/tmp/puppettest1.txt]/ensure: defined content as '{md5}69edbc23ca13613a136d61fb4f662d5e' Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 0.03 seconds [root@agent ~]# more /tmp/puppettest1.txt hello,First Puppet test
客戶端從新簽名時,須要是刪除'hostname'.pem
Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}
服務端也須要刪除簽名相關文件
find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete
刪除某臺客戶端的認證信息,使用命令
puppet cert --clean {node certname}
同時
Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}
因爲本人極度厭煩大便和尤半圖(桌面linux),自悟去吧。
後續添加。
後續添加。