Puppet是開源的基於Ruby的系統配置管理工具,puppet是一個C/S結構, 固然,這裏的C能夠有不少,所以,也能夠說是一個星型結構. 全部的puppet客戶端同一個服務器端的puppet通信. 每一個puppet客戶端每半小時(能夠設置)鏈接一次服務器端, 下載最新的配置文件,而且嚴格按照配置文件來配置服務器. 配置完成之後,puppet客戶端能夠反饋給服務器端一個消息. 若是出錯,也會給服務器端反饋一個消息.node
(1)客戶端puppetd調用facter,facter探測出主機的一些變量,例如主機名,內存大小,ip地址等。pupppetd 把這些信息經過ssl鏈接發送到服務器端;vim
(2)服務器端的puppetmaster 檢測客戶端的主機名,而後找到manifest裏面對應的node配置, 並對該部份內容進行解析,facter送過來的信息能夠做爲變量處理,node牽涉到的代碼才解析,其餘沒牽涉的代碼不解析。解析分爲幾個階段,語法檢查,若是語法錯誤就報錯。若是語法沒錯,就繼續解析,解析的結果生成一箇中間的「僞代碼」,而後把僞代碼發給客戶端;ruby
(3)客戶端接收到「僞代碼」,而且執行,客戶端把執行結果發送給服務器;服務器
(4)服務器端把客戶端的執行結果寫入日誌。session
|
Master工具 |
Agent測試 |
系統this |
Centos 6.6spa |
Centos 6.6rest |
ip(自設) |
192.168.2.40 |
192.168.2.42 |
主機名(自設) |
master.kisspuppet.com |
agent.kisspuppt.com |
|
|
|
|
|
|
|
|
|
Puppet 不在 CentOS 的基本源中,須要加入 PuppetLabs 提供的官方源:
wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm yum install puppetlabs-release-6-1.noarch.rpm yum update
yum install -y ruby facter puppet-server # 啓動 service puppet start service puppetmaster start # 設置開機自啓動 chkconfig puppet on chkconfig puppetmaster on
yum install -y ruby facter puppet 啓動 service puppet start 設置開機自啓動 chkconfig puppet on 配置 vim /etc/puppet/puppet.conf 添加下面一行 server=master.kisspuppet.com 重啓puppet service puppet restart
Master自動簽發證書設置
設置master自動簽發全部的證書,咱們只須要在/etc/puppet目錄下建立 autosign.conf文件。(不須要修改 /etc/puppet/puppet.conf文件,由於我默認的autosign.conf 文件的位置沒有修改)
[ root @ master ~ ] # cat > / etc / puppet / autosign . conf < < EOF > * . redking . com > EOF [ root @ master ~ ] # service puppetmaster restart Stopping puppetmaster: [ OK ] Starting puppetmaster: [ OK ] [ root @ master ~ ] #
這樣就會對全部來自fisteam2.com的機器的請求,都自動簽名。Agent須要向服務器端發出請求, 讓服務器對客戶端進行管理. 這實際上是一個證書籤發的過程. 第一次運行 puppet 客戶端的時候會生成一個 SSL 證書並指定發給 Puppet 服務端, 服務器端若是贊成管理客戶端,就會對這個證書進行簽發,能夠用這個命令來簽發證書,因爲咱們已經在客戶端設置了server地址,所以不須要跟服務端地址
輸入下列命令就能夠申請證書了
[ root @ agent1 ~ ] # puppet agent --test
因爲我配置的自動簽發證書,因此直接就簽發了,在服務端執行下列命令進行查看是否定證成功。
[ root @ master ~ ] # puppet cert list --all
如今能夠在服務端寫個小例子來測試一下。這個例子做用很簡單,用來在客戶端的 /tmp 目錄下新建一個 helloworld.txt 文件,內容爲 hello, world. 在Master端編寫代碼:
# vi /etc/puppet/manifests/site.pp node default { file { "/tmp/helloworld.txt": content => "hello, world"; } }
在Agent端上執行 puppet,運行成功後會在 /tmp 看到新生成的 helloworld.txt:
$ puppet agent --test --server=master.vpsee.com warning: peer certificate won't be verified in this SSL session info: Caching certificate for client.vpsee.com info: Caching certificate_revocation_list for ca info: Caching catalog for client.vpsee.com info: Applying configuration version '1330668451' notice: /Stage[main]//Node[default]/File[/tmp/helloworld.txt]/ensure: defined content as '{md5}e4d7f1b4ed2e42d15898f4b27b019da4' info: Creating state file /home/vpsee/.puppet/var/state/state.yaml notice: Finished catalog run in 0.03 seconds
查看Agent端
$ cat /tmp/helloworld.txt hello, world
這樣就說明puppet可以正常運行。