天天看點

Puppet的安裝和初配置

一、前言:

Puppet是Puppet Labs基于ruby語言開發的自動化系統配置工具,可以以C/S模式或獨立模式運作,支援對所有UNIX及類UNIX系統的批量配置和管理,最新版本也開始支援對Windows作業系統有限的一些管理。

Puppet适用于伺服器管理的整個過程,比如初始安裝、配置、更新以及系統下線。

Puppet原理:

Puppet的工作細節分成如下幾個步驟:  

1、用戶端puppetd調用facter,facter會探測出這台主機的一些變量如主機名、記憶體大小、IP位址等。然後puppetd把這些資訊發送到服務端。 

2、伺服器端的puppetmaster檢測到用戶端的主機名,然後會到manifest裡面對應的node配置,然後對這段内容進行解析,facter送過來的資訊可以作為變量進行處理的,node牽涉到的代碼才解析,其它的代碼不解析,解析分幾個過程:文法檢查、然後會生成一個中間的僞代碼,然後再把僞代碼發給客戶機。  

3、用戶端接收到僞代碼之後就會執行,用戶端再把執行結果發送給伺服器。  

4、伺服器再把用戶端的執行結果寫入日志。

二、安裝:

安裝 puppet-Server:yum install puppet,puppet-server  

首先在伺服器端和用戶端配置好hostname,因為puppet是基于hostname來檢測的,同時都要修改hosts檔案:  

修改主機名的指令:

cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=master

vim /etc/hosts

192.168.159.151    master.com 

192.168.159.120    slave.com

Puppet 需要 Ruby 的支援,如果要檢視指令行幫助的話需要額外 ruby-rdoc 這個軟體包:    

yum install puppet-server -y 【這一步為預設安裝ruby ruby-libs ruby-rdoc等軟體包】  

/etc/init.d/puppetmaster start  

關閉 iptables,關閉selinux  

iptables  -F  

sed -i ‘/SELINUX/S/enforce/disabled/’ /etc/selinux/config

需在puppet.conf中添加一個條目,certname,配置項certname指定了puppet master的名字,如下

[master]

certname=master.com

添加certname配置的目錄有兩個:它會使證書相關的問題解決起來更容易,解決了在目前許多linux主機上都存在的Ruby SSL代碼錯誤,這個錯誤導緻了我們需要手動指定puppet master的SSL證書使用的名字。同時為我們的puppet建立一個DNS别名,添加到hosts和DNS配置中。

接下來我們需要添加site.pp,它包含了我們想要管理的配置的基本資訊。

site.pp檔案告訴puppet去哪裡尋找并載入指定的用戶端配置,這個檔案放在/etc/puppet/manifests中,首先建立site.pp,是因為沒有它,puppet将拒絕啟動。

啟動我們的puppetmaster

#systemctl start puppetmaster

添加字段

[main]

server=master.com

之後啟動服務

#systemctl start puppet

三、證書申請:

Puppet用戶端與伺服器端是通過SSL隧道通信的,用戶端安裝完成後,需要向伺服器端申請證書:  

1. 首次連接配接伺服器端會發起證書申請,在用戶端執行指令如下:  

puppet agent --server  master.com  --no-daemonize -v -d --noop --test

執行上面的指令,用戶端将生成證書,并且把證書簽名請求發到伺服器端。 

2. 在伺服器端可以用puppet cert –list指令檢視到申請證書的用戶端主機名。  

3. puppet cert  -s指令可以為特定的主機頒發證書,puppet cert –s and –a 表示給所有的主機頒發證書  

例如:puppet cert –s slave.com 為用戶端頒發證書。  

四、 驗證puppet配置:  

在服務端寫個例子測試一下。這個例子作用很簡單,用來在用戶端的/tmp目錄下建立一個 test.txt 檔案,内容為:hello,test!在服務端編寫代碼:【伺服器端不需要建立這個檔案】  

vim /etc/puppet/manifests/site.pp  

node default {  

file {  

"/tmp/test.txt": content => "helo,test!";  

 }  

}

master針對于slave.puppet.com的配置完成了,然後去agent上執行。

五、用戶端測試:

#puppet agent --test --server master.com

此時,用戶端将會從伺服器下載下傳并執行,在/tmp目錄下生成叫做1.txt的檔案。

最後檢視cat /tmp/test.txt

helo,test!

此時puppet伺服器端和用戶端安裝完畢。

本文轉自 優果馥思 51CTO部落格,原文連結:http://blog.51cto.com/youguofusi/2053034

繼續閱讀