CentOS下puppet安裝


簡介

Puppet是開源的基於Ruby的系統配置管理工具,puppet是一個C/S結構, 當然,這里的C可以有很多,因此,也可以說是一個星型結構. 所有的puppet客戶端同一個服務器端的puppet通訊. 每個puppet客戶端每半小時(可以設置)連接一次服務器端, 下載最新的配置文件,並且嚴格按照配置文件來配置服務器. 配置完成以后,puppet客戶端可以反饋給服務器端一個消息. 如果出錯,也會給服務器端反饋一個消息.

 

工作流程

 

(1)客戶端puppetd調用facter,facter探測出主機的一些變量,例如主機名,內存大小,ip地址等。pupppetd 把這些信息通過ssl連接發送到服務器端;

 

(2)服務器端的puppetmaster 檢測客戶端的主機名,然后找到manifest里面對應的node配置, 並對該部分內容進行解析,facter送過來的信息可以作為變量處理,node牽涉到的代碼才解析,其他沒牽涉的代碼不解析。解析分為幾個階段,語法檢查,如果語法錯誤就報錯。如果語法沒錯,就繼續解析,解析的結果生成一個中間的“偽代碼”,然后把偽代碼發給客戶端;

 

(3)客戶端接收到“偽代碼”,並且執行,客戶端把執行結果發送給服務器;

 

(4)服務器端把客戶端的執行結果寫入日志。

 

准備

 

Master

Agent

系統

Centos 6.6

Centos 6.6

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

 

Master端

yum install -y ruby facter puppet-server

 

# 啟動

service puppet start

service puppetmaster start

 

# 設置開機自啟動

chkconfig  puppet on

chkconfig  puppetmaster on

 

 

 

Agent端

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

 

 

 

 

Agent申請證書

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地址,因此不需要跟服務端地址

Agent向Master請求認證

輸入下列命令就可以申請證書了

[ 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能夠正常運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM