一、Puppet簡介
Puppet基于ruby語言開發的自動化系統配置工具,可以C/S模式或獨立運行,支持對所有UNIX及類UNIX系統的配置管理,最新版本也開始支持對Windows操作系統有限的一些管理。Puppet適用于服務器管的整個過程 ,比如初始安裝、配置更新以及系統下線。
二、Puppet的安裝
Puppet的安裝方式支持源碼安裝、yum安裝以及ruby的gem安裝。官網推薦使用yum來安裝puppet,方面以后的升級、管理、維護。Centos可以采用yum來安裝,但是Centos的默認源中沒有puppet包,因此需要先安裝epel包。Epel是企業版Linux附加軟件包(Extra Packages for Enterprise Linux)的縮寫,是一個由特別興趣小組創建、維護并管理的,針對紅帽企業版Linux(RHEL)及其衍生發行版(比如CentOS、Scientific Linux)的一個高質量附加軟件包項目。
- Master的安裝
yum -y install ruby ruby-libs ruby-shadow
wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm
yum -y install puppet puppet-server facter
- Agent的安裝
yum install ruby ruby-libs ruby-shadow
wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm
yum -y install puppet facter
至此如果安裝過程不報錯的話,puppet已經安裝成功了。
三、Puppet的簡單配置
- Master的配置
先來看看puppet主目錄下都有什么文件已經每個文件是做什么用的:
ls -1 /etc/puppet/
auth.conf?????? #定義puppet master的acl文件
fileserver.conf?? #定義puppet master文件服務器的配置文件
manifests ?????? #puppet腳本主文件目錄,site.pp文件必須存在
modules??????????? #puppet模塊目錄
puppet.conf???? #puppet主配置文件
ssl???????????????????? #存放ssl證書的目錄
剛開始的話, puppet.conf不需要配置就可以滿足。
需要更改hosts文件,注意hosts要和主機名對應。
vim ?/etc/hosts添加如下內容:
10.1.4.218 puppet.zhang.com puppet
10.1.4.213 node1.zhang.com node1
10.1.4.214 node2.zhang.com node2
大家要根據實際情況加,我這里是一個master,兩個agent。
- Agent的配置
Agent的配置主要是更改agent上的/etc/puppet/puppet.conf文件的[agent]部分。
在agent上vim /etc/puppet/puppet.conf 添加如下配置
server = puppet.zhang.com??????? #master服務器的地址
runinterval = 3600?????????????????????? #每隔多久的時間進行自動更新,時間單位為秒
listen = true???????????????????????? #客戶端作為一個服務進行監聽,允許其它的機器觸發puppet運行允許遠程觸發puppet的節點配置
四、puppet的啟動和停止
- Master的啟動和停止
Master的啟動
/etc/rc.d/init.d/puppetmaster start
也可以以采用 service puppetmaster start啟動
第一次啟動建議采用puppet master –verbose –no-daemonize方式啟動,有助于測試和調試錯誤,如果采用后面這種方式,你可以看到啟動的整個過程,啟動過程會做一些初始化的工作,為master創建本地證書認證中心,證書和key。并打開socket等待client的連接。你可以在/etc/puppet/ssl目錄看到相關的文件和目錄。
Master的停止
/etc/rc.d/init.d/puppetmaster stop
也可以以采用 service puppetmaster stop停止
更改多選項可以使用/etc/rc.d/init.d/puppetmaster –h查看
- Agent的啟動和停止
Agent的啟動
/etc/rc.d/init.d/puppet start
也可以采用service puppet start來啟動
調試的時候可以采用
puppet agent –server=puppet.zhang.com –no-daemonize –verbose
的方式來啟動,這樣啟動我們可以看到agent是如何和master建立連接的。
Agent的停止
/etc/rc.d/init.d/puppet stop
也可以采用service puppet stop來停止。
五、FAQ
- 連接master的時候出現如下報錯:
dnsdomainname: Unknown host
解決辦法:檢查機器主機名的設置,以及是否添加進hosts。
- 連接master的時候出現如下報錯:
err: Could not request certificate: getaddrinfo: Name or service not known
解決辦法:服務器端沒有配置hosts域名綁定,在hosts中添加。
- 連接master的時候出現如下報錯:
warning: peer certificate won’t be verified in this SSL session
解決辦法:服務端還沒有返回簽發證書,使用puppet cert –list查看
- 連接master的時候出現如下報錯:
err: Could not retrieve catalog from remote server: certificate verify failed
解決辦法:客戶端和服務器端時間不同步,SSL連接需要依賴主機上的時間是否正確。執行更新時間的命令:/sbin/ntpdate asia.pool.ntp.org
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87564