Puppet前期環境(網絡、解析、yum源、NTP)在上一章節已經準備就緒,接下來我們就開始安裝Puppet了,安裝Puppet其實很簡單,官方已經提供了yum源,只需要自己將所需要的安裝包下載下來然后做成本地yum源即可使用。?注意:本實驗完全采用自定義的certname名,如果不設置默認會使用系統變量hostname的值。

一、安裝Puppetmaster

1、安裝Puppet-server、puppet和facter

[root@puppetmaster?~]#?yum?install?puppet?puppet-server?facter?-y?#系統會自己安裝一些ruby依賴包環境

2、配置puppet.conf?注意:這個里面配置了兩個certname名稱,其中[master]中配置的certname是為所有節點認證用的master名稱,[agent]中配置的certname是他本身agent的名稱,當然不配置默認是和master的名稱是一樣的。

[root@puppetmaster?~]#?cp?/etc/puppet/puppet.conf{,.bak}???#備份
[root@puppetmaster?~]#?vim?/etc/puppet/puppet.conf??#注釋已經刪除
[main]logdir?=?/var/log/puppet??#默認日志存放路徑rundir?=?/var/run/puppet??#pid存放路徑ssldir?=?$vardir/ssl?#證書存放目錄,默認$vardir為/var/lib/puppet
[agent]classfile?=?$vardir/classes.txtlocalconfig?=?$vardir/localconfigserver?=?puppetmaster.kisspuppet.com?#設置agent認證連接master端的服務器名稱,注意這個名字必須能夠被節點解析certname?=?puppetmaster_cert.kisspuppet.com?#設置agent端certname名稱
[master]certname?=?puppetmaster.kisspuppet.com??puppetmaster.kisspuppet.com?#設置puppetmaster認證服務器名

3、創建site.pp文件?site.pp文件是puppet讀取所有模塊pp文件的開始,在3.0版本以前必須設置,否則服務無法啟動。

[root@puppetmaster?~]#?touch?/etc/puppet/manifests/site.pp

4、啟動puppetmaster服務

[root@puppetmaster?~]#?/etc/init.d/puppetmaster?start
Starting?puppetmaster:???????[??OK??]
[root@puppetmaster?~]#?chkconfig?puppetmaster?on?#設置開機啟動

5、查看本地證書情況?puppetmaster第一次啟動會自動生成證書自動注冊自己

[root@puppetmaster?~]#?tree?/var/lib/puppet/ssl/
/var/lib/puppet/ssl/
├──?ca
│???├──?ca_crl.pem
│???├──?ca_crt.pem
│???├──?ca_key.pem
│???├──?ca_pub.pem
│???├──?inventory.txt
│???├──?private
│???│???└──?ca.pass
│???├──?requests
│???├──?serial
│???└──?signed
│???????└──?puppetmaster.kisspuppet.com.pem??#已注冊
├──?certificate_requests
├──?certs
│???├──?ca.pem
│???└──?puppetmaster.kisspuppet.com.pem
├──?crl.pem
├──?private
├──?private_keys
│???└──?puppetmaster.kisspuppet.com.pem
└──?public_keys└──?puppetmaster.kisspuppet.com.pem
9?directories,?13?files
[root@puppetmaster?~]#?puppet?cert?--list?--all??#帶+標示已經注冊成功
+?"puppetmaster.kisspuppet.com"?(C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8)?(alt?names:?"DNS:puppet",?"DNS:puppet.kisspuppet.com",?"DNS:puppetmaster.kisspuppet.com")

6、查看監聽狀態?puppetmaster服務開啟后,默認監聽TCP 8140端口

[root@puppetmaster?~]#?netstat?-nlatp?|?grep?8140
tcp????????0??????0?0.0.0.0:8140????????????????0.0.0.0:*???????????????????LISTEN??????1976/ruby???????????
[root@puppetmaster?~]#?lsof?-i:8140
COMMAND????PID???USER???FD???TYPE?DEVICE?SIZE/OFF?NODE?NAME
puppetmas?1976?puppet????5u??IPv4??14331??????0t0??TCP?*:8140?(LISTEN)

二、安裝Agent

以agent1為例

1、安裝puppet和facter

[root@agent1?~]#?yum?install?puppet?facter?#系統會自己安裝一些ruby依賴包環境

2、配置puppet.conf

[root@agent1?~]#?cp?/etc/puppet/puppet.conf{,.bak}
[root@agent1?~]#?vim?/etc/puppet/puppet.conf
[main]logdir?=?/var/log/puppetrundir?=?/var/run/puppetssldir?=?$vardir/ssl[agent]classfile?=?$vardir/classes.txtlocalconfig?=?$vardir/localconfigserver?=?puppetmaster.kisspuppet.com??#指向puppetmaster端certname?=?agent1_cert.kisspuppet.com?#設置自己的certname名

3、通過調試模式啟動節點向Puppetmaster端發起認證

[root@agent1?~]#?puppet?agent?--test
info:?Creating?a?new?SSL?key?for?agent1_cert.kisspuppet.com
info:?Caching?certificate?for?ca
info:?Creating?a?new?SSL?certificate?request?for?agent1_cert.kisspuppet.com
info:?Certificate?Request?fingerprint?(md5):?69:D2:86:E4:7F:00:E0:55:61:19:02:34:9E:9B:AF:F9
Exiting;?no?certificate?found?and?waitforcert?is?disabled

4、服務器端確定認證

[root@puppetmaster?~]#?puppet?cert?--list?--all?#查看認證情況"agent1_cert.kisspuppet.com"??(69:D2:86:E4:7F:00:E0:55:61:19:02:34:9E:9B:AF:F9)?#未認證
+?"puppetmaster.kisspuppet.com"?(C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8)?(alt?names:?"DNS:puppet",?"DNS:puppet.kisspuppet.com",?"DNS:puppetmaster.kisspuppet.com")
[root@puppetmaster?~]#?puppet?cert?--sign?agent1_cert.kisspuppet.com?#注冊agent1
notice:?Signed?certificate?request?for?agent1_cert.kisspuppet.com
notice:?Removing?file?Puppet::SSL::CertificateRequest?agent1_cert.kisspuppet.com?at?'/var/lib/puppet/ssl/ca/requests/agent1_cert.kisspuppet.com.pem'[root@puppetmaster?~]#?puppet?cert?--list?--all?#再次查看認證情況
+?"agent1_cert.kisspuppet.com"??(3E:46:4E:75:34:9A:5A:62:A6:3C:AE:BD:49:EE:C0:F5)
+?"puppetmaster.kisspuppet.com"?(C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8)?(alt?names:?"DNS:puppet",?"DNS:puppet.kisspuppet.com",?"DNS:puppetmaster.kisspuppet.com")[root@puppetmaster?~]#?tree?/var/lib/puppet/ssl/?#另外一種查看認證的方式
/var/lib/puppet/ssl/
├──?ca
│???├──?ca_crl.pem
│???├──?ca_crt.pem
│???├──?ca_key.pem
│???├──?ca_pub.pem
│???├──?inventory.txt
│???├──?private
│???│???└──?ca.pass
│???├──?requests
│???├──?serial
│???└──?signed
│???????├──?agent1_cert.kisspuppet.com.pem??#已經注冊成功
│???????└──?puppetmaster.kisspuppet.com.pem
├──?certificate_requests
├──?certs
│???├──?ca.pem
│???└──?puppetmaster.kisspuppet.com.pem
├──?crl.pem
├──?private
├──?private_keys
│???└──?puppetmaster.kisspuppet.com.pem
└──?public_keys└──?puppetmaster.kisspuppet.com.pem
9?directories,?14?files

5、其它節點一起認證

[root@puppetmaster?~]#?puppet?agent?--test?#puppetmaster自己申請agent認證
info:?Creating?a?new?SSL?key?for?puppetmaster_cert.kisspuppet.com
info:?Creating?a?new?SSL?certificate?request?for?puppetmaster_cert.kisspuppet.com
info:?Certificate?Request?fingerprint?(md5):?7D:AC:F7:97:04:2B:E4:C5:74:4A:16:05:DB:F6:6A:98
Exiting;?no?certificate?found?and?waitforcert?is?disabled[root@puppetmaster?~]#?puppet?cert?--sign?--all?#注冊所有請求的節點
notice:?Signed?certificate?request?for?puppetmaster_cert.kisspuppet.com
notice:?Removing?file?Puppet::SSL::CertificateRequest?puppetmaster_cert.kisspuppet.com?at?'/var/lib/puppet/ssl/ca/requests/puppetmaster_cert.kisspuppet.com.pem'
notice:?Signed?certificate?request?for?agent2_cert.kisspuppet.com
notice:?Removing?file?Puppet::SSL::CertificateRequest?agent2_cert.kisspuppet.com?at?'/var/lib/puppet/ssl/ca/requests/agent2_cert.kisspuppet.com.pem'
notice:?Signed?certificate?request?for?agent3_cert.kisspuppet.com
notice:?Removing?file?Puppet::SSL::CertificateRequest?agent3_cert.kisspuppet.com?at?'/var/lib/puppet/ssl/ca/requests/agent3_cert.kisspuppet.com.pem'[root@puppetmaster?~]#?puppet?cert?--list?--all?#查看所有節點認證
+?"agent1_cert.kisspuppet.com"???????(3E:46:4E:75:34:9A:5A:62:A6:3C:AE:BD:49:EE:C0:F5)
+?"agent2_cert.kisspuppet.com"???????(A0:CE:70:BE:A9:11:BF:F4:C8:EF:25:8E:C2:2C:3B:B7)
+?"agent3_cert.kisspuppet.com"???????(98:93:F7:0C:ED:94:81:3D:51:14:86:68:2B:F3:F1:A0)
+?"puppetmaster.kisspuppet.com"??????(C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8)?(alt?names:?"DNS:puppet",?"DNS:puppet.kisspuppet.com",?"DNS:puppetmaster.kisspuppet.com")
+?"puppetmaster_cert.kisspuppet.com"?(57:A3:D7:3D:64:2F:D6:FD:BC:2A:6C:79:68:73:EA:AB)

三、編寫簡單的motd模塊

1、創建模塊目錄結構?注意:再未指定modulepath搜索路徑的情況下,會有默認搜索路徑的,可通過以下方式查看到

[root@puppetmaster?~]#?puppet?master?--genconfig?>/etc/puppet/puppet.conf.out
[root@puppetmaster?~]#?cat?/etc/puppet/puppet.conf.out?|?grep?modulepathmodulepath?=?/etc/puppet/modules:/usr/share/puppet/modules[root@puppetmaster?modules]#?tree?/etc/puppet/modules/
/etc/puppet/modules/
└──?motd├──?files??#存放文件目錄│???└──?etc│???????└──?motd├──?manifests??#存放模塊pp配置文件目錄│???└──?init.pp└──?templates?#存放模板目錄5?directories,?2?files

2、編寫pp文件

[root@puppetmaster?modules]#?vim?motd/manifests/init.pp?
class?motd{?????????????????#定義一個類叫motdpackage{?'setup':????#定義package資源ensure?=>?present,??#要求setup這個包處于被安裝狀態}file{?'/etc/motd':??#定義file資源ensure??=>?present,??#要求file文件處于存在狀態owner???=>?'root',?#要求file文件屬主為rootgroup???=>?'root',?#要求file文件屬組為rootmode????=>?'0644',?#要求file文件權限為644source??=>?"puppet://$puppetserver/modules/motd/etc/motd",?#要求file文件從puppetmaster端服務器下載require?=>?Package['setup'],?#要求文件被配置之前先執行package資源}
}[root@puppetmaster?modules]#?cat?motd/files/etc/motd?
--???????????????????????--
--------puppet?test---------
--???????????????????????--

3、編寫site.pp文件

[root@puppetmaster?~]#?vim?/etc/puppet/manifests/site.pp?
$puppetmaster?=?'puppetmaster.kisspuppet.com'?#設置全局變量
node?'puppetmaster_cert.kisspuppet.com'{include??motd
}
node?'agent1_cert.kisspuppet.com'{include??motd
}
node?'agent2_cert.kisspuppet.com'{include??motd
}
node?'agent3_cert.kisspuppet.com'{include??motd
}

四、測試motd模塊

[root@agent1?~]#?puppet?agent?--test??#測試節點agent1
info:?Caching?catalog?for?agent1_cert.kisspuppet.com
info:?Applying?configuration?version?'1394304542'
notice:?/Stage[main]/Motd/File[/etc/motd]/content:?
---?/etc/motd????2000-01-13?07:18:52.000000000?+0800
+++?/tmp/puppet-file20140309-4571-1vqc18j-0????2014-03-09?02:51:47.000000000?+0800
@@?-0,0?+1,3?@@
+--???????????????????????--
+--------puppet?test---------
+--???????????????????????--
info:?FileBucket?adding?{md5}d41d8cd98f00b204e9800998ecf8427e
info:?/Stage[main]/Motd/File[/etc/motd]:?Filebucketed?/etc/motd?to?puppet?with?sum?d41d8cd98f00b204e9800998ecf8427e
notice:?/Stage[main]/Motd/File[/etc/motd]/content:?content?changed?'{md5}d41d8cd98f00b204e9800998ecf8427e'?to?'{md5}87ea3a1af8650395038472457cc7f2b1'
notice:?Finished?catalog?run?in?0.40?seconds[root@agent1?~]#?cat?/etc/motd?
--???????????????????????--
--------puppet?test---------
--???????????????????????--
[root@agent1?~]#?[root@puppetmaster?~]#?puppet?agent?-t??#測試節點puppetmaster
info:?Caching?catalog?for?puppetmaster_cert.kisspuppet.com
info:?Applying?configuration?version?'1394305371'
notice:?/Stage[main]/Motd/File[/etc/motd]/content:?
---?/etc/motd????2010-01-12?21:28:22.000000000?+0800
+++?/tmp/puppet-file20140309-3102-1gadon0-0????2014-03-09?03:02:51.966998294?+0800
@@?-0,0?+1,3?@@
+--???????????????????????--
+--------puppet?test---------
+--???????????????????????--
info:?FileBucket?adding?{md5}d41d8cd98f00b204e9800998ecf8427e
info:?/Stage[main]/Motd/File[/etc/motd]:?Filebucketed?/etc/motd?to?puppet?with?sum?d41d8cd98f00b204e9800998ecf8427e
notice:?/Stage[main]/Motd/File[/etc/motd]/content:?content?changed?'{md5}d41d8cd98f00b204e9800998ecf8427e'?to?'{md5}87ea3a1af8650395038472457cc7f2b1'
info:?Creating?state?file?/var/lib/puppet/state/state.yaml
notice:?Finished?catalog?run?in?0.52?seconds
[root@puppetmaster?~]#?cat?/etc/motd?
--???????????????????????--
--------puppet?test---------