Puppet安裝配置

 Puppet安裝配置

前言:

    系統管理員經常陷入一系列的重複任務中:如升級軟件包、管理配置文件、系統服務、用戶管理、cron任務以及添加新的配置、修復錯誤等。這些任務通常是重複低效的,解決這類任務的第一反應是讓他們自動化,於是出現了定製腳本。由於環境複雜,定製腳本和應用程序一再被重複開發,並且很難適合多種平臺,靈活性和功能也很難保證,於是像Puppet這樣的自動化配置管理工具便出現了。

在開源世界裏,有很多配置工具可供選擇,這個領域一些關鍵的產品有:

Puppet http://puppet.reductivelabs.com/

Puppet中文wiki:http://puppet.wikidot.com/

Ruby寫成的配置管理工具,使用C/S架構,使用declarative language配置客戶端。

Cfengine http://www.cfengine.org

最先發布的開源配置工具之一,1993年發佈,同樣是C/S架構,通常應用於教育機構。

LCFG http://www.lcfg.org/

C/S架構的配置管理工具,使用XML定義配置。

Bcfg2

Python編寫的C/S架構的配置管理工具,使用規格書和客戶機響應配置目標主機。

 

Puppet的工作模式:

    puppet有兩種執行模式,一是直接運行puppetd file.manifest,這種方式做測試非常直接和方便;二是puppetd --server puppetmaster.server.com;前面一種是直接讀取file.mainfest文件進行配置,後一種是從服務端下載manifest進行配置,也是最常用的工作模式:Puppet是一個C/S架構的配置管理工具,在中央服務器上安裝puppet-server軟件包(被稱作Puppet master)。在需要管理的目標主機上安裝puppet客戶端軟件(被稱作Puppet Client)。當客戶端連接上Puppet master後,定義在Puppet master上的配置文件會被編譯,然後在客戶端上運行。每個客戶端默認每半個小時和服務器進行一次通信,確認配置信息的更新情況,不過建議做好通過crontab來實現即時性,同時也能緩解puppet-server服務器的負擔。如果有新的配置信息或者配置信息已經改變,配置將會被重新編譯併發布到各客戶端執行。也可以在服務器上主動觸發一個配置信息的更新,強制各客戶端進行配置。如果客戶端的配置信息被改變了,它可以從服務器獲得原始配置進行校正。

 

安裝puppet服務端與客戶端

服務器端IP:172.16.10.10

客戶端IP:172.16.10.20

1、添加外部源:

centos的官方軟件庫裏面不包含puppet包,但是在epel項目裏面有包含puppet

包. epel 是一個對rhel軟件倉庫的擴展,把一些有用的,但是rhel庫沒包含的

軟件收集在一起做成的一個軟件倉庫. 

因此首先在centos上面安裝epel,以 64位的centos6.2 舉例,其他版本以此類推 

#rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm

 

2、更改hosts文件和主機名:

puppet的客戶端和服務器是通過ssl鏈接的,在服務器有一個自簽名的根證書,在安 裝軟件的時候自動生成。注意:要在安裝軟件以前先設置主機名,因爲生成證書的時候要把主機名寫入證書,如果證書生成好了再改主機名,就連不上,這是很多初學者遇到的問題。每個客戶端的證書要經過根證書籤名才能和服務器連接。所以首先要在客戶端執行下面的命令來請求服務器簽名證書。

        主機名要設置爲FQDN格式。例如服務器端爲master.internel.test.com 客戶端爲slave.internal.test.com

hosts文件爲:

172.16.10.10 master.internel.test.com

172.16.10.20 slave.internal.test.com

 

3、安裝服務器端:

#yum install -y puppet-server

 

4、安裝客戶端:

#yum install puppet

 

5、服務器與客戶端開放防火牆端口,關閉selinux。

tcp 8140

udp 8140

 

6、啓動服務

server:/etc/init.d/puppetmaster start

client:/etc/init.d/puppet start

 

7、簽名證書

client:

# puppetd --test --server master.internal.gexing.com

執行上面的命令,客戶端將生成證書,並且把證書籤名請求發到服務器端。登錄到服務器端,執行下面的命令查看是否有客戶端的證書請求

server:

#puppetca --list

slave.internal.test.com (26:C7:F9:87:EF:DC:F0:87:E3:77:CC:61:8E:E2:B9:20)

如果看到了客戶端的證書請求,用下面的命令對所有證書請求籤名:

#puppetca -s -a

 

8、測試

server:

puppetmaster的第一個執行的代碼是在/etc/puppet/manifest/site.pp 因此這個文件必須存在,而且其他的代碼也要通過代碼來調用. 現在,建立一個最簡單的site.pp文件,內容如下

node default {

file { "/tmp/test.txt":

content => "hello"}

}

上面的代碼對默認連入的puppet客戶端執行一個操作,在/tmp目錄生成一個test.txt文件,

內容是hello,first puppet manifest. 回到客戶端,執行下面的命令:

slave:

#puppetd --test --server master.internal.test.com

這樣,客戶端將會從服務器下載默認的執行代碼,在/tmp目錄下生成叫做test.txt的文件。

9、參考文檔

http://code.google.com/p/puppet-manifest-share/downloads/list

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章