配置管理工具Puppet簡介、安裝

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

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

Puppet(http://puppet.reductivelabs.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簡介:

1. Puppet的用途

Puppet是開源的基於Ruby的系統配置管理工具,依賴於C/S的部署架構。主要開發者是Luke Kanies,遵循GPLv2版權協議。從1997年開始Kanies參與UNIX的系統管理工作,Puppet的開發源於這些經驗。因爲對已有的配置工具不甚滿意,從2001年到2005年間,Kanies開始在Reductive實驗室從事工具的開發。很快,Reductive實驗室發佈了他們的旗艦產品——Puppet。

2. Pupput的特性

許多系統配置管理工具工作的方式非常類似,如cfengine。是什麼讓Puppet與衆不同?

Puppet的語法允許你創建一個單獨腳本,用來在你所有的目標主機上建立一個用戶。所有的目標主機會依次使用適用於本地系統的語法解釋和執行這個模塊。舉例:如果這個配置是在Red Hat服務器上執行,建立用戶使用useradd命令;如果這個配置是在FreeBSD主機上執行,使用的是adduser命令。

Puppet另一個卓越的地方是它的靈活性。源於開源軟件的天性,你可以自由的獲得Puppet的源碼,如果你遇到問題並且有能力的話,你可以修改或者加強Puppet的代碼去適用於你的環境。另外,社區開發者和捐獻者還在不斷增強Puppet的功能。一個大的開發者和用戶社區也致力於提供Puppet的文檔和技術支持。

Puppet也是易於擴展的。定製軟件包的支持功能和特殊的系統環境配置能夠快速簡單的添加進Puppet的安裝程序中。

3. Puppet的工作模式

Puppet是一個C/S架構的配置管理工具,在中央服務器上安裝puppet-server軟件包(被稱作Puppet master)。在需要管理的目標主機上安裝puppet客戶端軟件(被稱作Puppet Client)。當客戶端連接上Puppet master後,定義在Puppet master上的配置文件會被編譯,然後在客戶端上運行。每個客戶端默認每半個小時和服務器進行一次通信,確認配置信息的更新情況。如果有新的配置信息或者配置信息已經改變,配置將會被重新編譯併發布到各客戶端執行。也可以在服務器上主動觸發一個配置信息的更新,強制各客戶端進行配置。如果客戶端的配置信息被改變了,它可以從服務器獲得原始配置進行校正。

4. Puppet的未來

最後,Puppet是一個年輕的工具,仍然處於開發和發展中。Puppet社區快速壯大,並且許多新的想法不斷融入,促使開發、更新和模塊每天都在呈現。

安裝配置:

1. Puppet在RedHat/CentOS系統上安裝

Puppet是基於Ruby寫成的,所以安裝前要準備好Ruby環境。在中心的Server上安裝puppet-server包,並運行puppetmasterd進程;在被管理機上安裝puppet包,並運行puppetd進程。另外,在每臺主機上配置好自己的hostname,之後每臺機器要以hostname區分。

1). 安裝ruby環境:

yum install ruby ruby-rdoc

2). 安裝puppet

Server端安裝:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

yum install puppet-server

chkconfig –level 2345 puppetmaster on

修改hosts,添加下面行:

Vi /etc/hosts

172.16.228.30   puppet.sina.com.cn puppet

172.16.228.29   web1.sina.com.cn web1

客戶端安裝:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

yum install puppet

chkconfig –level 2345 puppet on

修改hosts,添加下面行:

Vi /etc/hosts

172.16.228.30   puppet.sina.com.cn puppet

172.16.228.29   web1.sina.com.cn web1

3). 啓動puppet

Server端首次運行前,編輯/etc/puppet/manifests/site.pp文件,內容可以用最基本的:

# Create “/tmp/testfile” if it doesn’t exist.

class test_class {

file { “/tmp/testfile”:

ensure => present,

mode => 644,

owner => root,

group => root

}

}

# tell puppet on which client to run the class

node web1.sina.com.cn {

include test_class

}

啓動Server端:

service puppetmaster start

啓動客戶端:

/etc/init.d/puppet once -v

這時客戶機會去連server,但是由於連接是在ssl上的,而Server還沒有sign過客戶端的cert,客戶機被斷開。

到Server端執行:puppetca -list,會顯示等待簽名的客戶端的主機名,執行:puppetca -sign <客戶端主機名> 即可爲其簽名。

在Server端爲web1.sian.com.cn授權:

puppetca -list

web1.sian.com.cn

puppetca -sign web1.sian.com.cn

這時再到客戶機上啓動puppetd,即可看到客戶在正常地連接server,並且應用Server上爲客戶端定製的配置策略。

啓動客戶端:

/etc/init.d/puppet once -v

4). 測試:

也可以將日誌直接打印到終端上進行測試:

Server端:puppetmasterd -d –no-daemonize -v –trace

客戶端:puppetd –test –trace –debug

2. puppet配置文件

主配置文件(puppet.conf):

1). 配置文件命名空間:

main 通用配置選項

puppetd 客戶端配置選項

puppetmasterd 服務端配置選項

2). main命名空間選項:

confdir 配置文件目錄,默認在/etc/puppet

vardir 動態數據目錄,默認在/var/lib/puppet

logdir 日誌目錄,默認在/var/log/log

rundir puppet PID目錄,默認在/var/run/puppet

statedir state目錄,默認在$vardir/state

statefile state文件,默認在$statedir/state.yaml

ssldir SSL證書目錄,默認在$vardir/ssl

trace 發生錯誤時顯示跟蹤信息,默認false

filetimeout 檢測配置文件狀態改變的時間週期,單位秒,默認15秒

syslogfacility 指定syslog功能爲user級,默認爲daemon級

3). puppetmasterd命名空間選項:

user 後臺進程執行的用戶

group 後臺進程執行的組

mainfestdir mainfests文件存儲目錄,默認爲$confdir/mainfests

mainfest mainfest站點文件的名字,默認爲site.pp

bindaddress 後臺進程綁定的網卡地址接口

masterport 後臺進程執行的端口,默認爲8140

4). puppet命名空間選項:

server puppet puppet服務器名,默認爲puppet

runinterval seconds puppet應用配置的時間間隔,默認1800秒(0.5小時)

puppetdlockfie file puppet lock文件位置,默認$statedir/puppetdlock

puppetport port 後臺進程執行的端口,默認8139

文件服務配置文件(fileserver.conf):

[files]

path /var/lib/puppet/files

allow 121.14.1.*

allow 60.28.228.0/24

allow *.house.sina.com.cn

deny *.sina.com.cn

path定義文件存放路徑,通過allow/deny來控制訪問權限。

3. puppet命令集


1). puppet 用於執行用戶所寫獨立的mainfests文件

# puppet -l /tmp/manifest.log manifest.pp

2). puppetd 運行在被管理主機上的客戶端程序

# puppetd –server puppet.leju.com

3). puppetmasterd 運行在管理機上的服務器程序

# puppetmasterd

4). puppetca puppet認證程序

# puppetca -l

pclient.leju.com

# puppetca -s pclient.leju.com

5). puppetrun 用於連接客戶端,強制運行本地配置文件

# puppetrun -p 10 –host host1 –host host2 -t remotefile -t webserver

6). filebucket 客戶端用於發送文件到puppet file bucket的工具

# filebucket -b /tmp/filebucket /my/file

7). ralsh 轉換配置信息到puppet配置代碼

# ralsh user luke

user { ‘luke’:

home => ‘/home/luke’,

uid => ‘100′,

ensure => ‘present’,

comment => ‘Luke Kanies,,,’,

gid => ‘1000′,

shell => ‘/bin/bash’,

groups => ['sysadmin','audio','video','puppet']

}

8). puppetdoc 打印puppet參考文檔

# puppetdoc -r type > /tmp/type_reference.rst

# puppetdoc –outputdir /tmp/rdoc –mode rdoc /path/to/manifests

# puppetdoc /etc/puppet/manifests/site.pp

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/SmileGelila/archive/2010/10/22/5957965.aspx

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