puppet 學習(一: 安裝及簡單實例應用)
本次安裝環境是: centos 5.4 X86_64位
Server:
1.先安裝ruby語言包、ruby標準庫、ruby shadow庫
yum
install -y ruby ruby-libs ruby-shadow
2.需要添加EPRL庫,來支持puppet
wget
http:// dl.fedoraproject.org
/pub/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
如果你的系統是centos
6版本的或者是centos 5版本但是是32位的,可以到網站:
dl.fedoraproject.org查找你們想要的
3.在master主機上,需要從EPEL倉庫安裝puppet、puppet-server facter
rpm
-Uvh epel-release-5-4.noarch.rpm
puppet軟件包含了agent程序,puppet-server軟件包含了master程序,facter軟件包含了系統盤點工具facter,可以獲取agent主機的相關信息
yum
install -y puppet puppet-server facter
之后啟動puppet
master
service puppetmaster start
啟動
puppetmaster:[確定]
這樣,puppet
server上的安裝算是完成了
現在,master和agent都安裝好了,解釋一下/etc/puppet/下的文件含義:
Puppet.conf
puppet的服務端配置文件
Auth.conf client訪問puppet server的acl配置文件
Fileserver.conf puppet server作為文件服務器的ACL配置文件
Manidests puppet的腳本目錄文件目錄
Site.pp
文件告訴puppet去哪里尋找并載入指定的客戶端配置,如果缺少此文件,puppet會啟動失敗的
防火墻設置:
-A
RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT
需要重啟防火墻,service
iptables restart
配置好防火墻后,就可以允許client訪問puppet
配置第一個agent
Client:
同樣需要安裝epel-release-5-4.noarch.rpm
下載:wget http://dl.fedoraproject.org/pub/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
在agent端只需要安裝:
yum install puppet facter
Client
請求:puppet
agent --server=puppet.xxxx.com(puppet master域名) --verbose --no-daemonize
解釋:參數
--server 指定了需要連接puppet master 的域名或者主機名,盡量使用域名吧,否則不同網絡之間無法通過主機名相通
--no-daemonize 使得puppet 客戶端運行在前端并輸出日志到標準輸出
--verbose 使客戶端輸出更詳細的日志
Server端需要相應這個請求:
查看:puppet cert –list
"shwt08" (94:BC:4A:FA:31:E1:10:9F:3C:4D:B3:E8:CB:A4:F8:B9)
puppet
cert --sign shwt08
notice: Signed certificate request for
shwt08
notice: Removing file Puppet::SSL::CertificateRequest
shwt08 at '/var/lib/puppet/ssl/ca/requests/shwt08.pem'
當然,如果我們有很多個client的話,都需要一個個去認證確實是一件很麻煩的事情,所以,修改puppet.conf文件,實現自動化認證
在全局”[mian]”下添加一行:
autosign
= true
重啟master
service
puppetmaster restart
重新添加一個clint,驗證
需要先去wget 后需要編輯/etc/hosts
之后puppet agent
--server=puppet.xxxx.com --no-daemonize –verbose 發現是沒有問題的
創建第一個配置:
在master上修改兩個文件:
目錄/etc/puppet/manifests下:
nodes.pp site.pp
如果沒有這兩個文件就手工建吧
vi nodes.pp
node
default {
file{"/root/vol_disk_check.sh":
source => "puppet:///files/vol_disk_check.sh",
owner => "root",
group => "root",
mode => 755;
}
}
Vi site.pp
import
'nodes.pp'
至于具體的解釋說明,等下章再詳細的解釋下,這篇文章主要來闡明puppet安裝及簡易同步文件的效果
測試來同步一個文件
puppet
agent --server=puppet.xxxx.com --test -v
ok,從詳細信息中,得知client已經同步文件了
下面說遇到的兩個錯誤:
錯誤1:
err: Could not retrieve catalog from remote
server: hostname not match with the server certificate
解決辦法:
在master和client上查看是否二者日期不同步
在client上配置/etc/hosts文件,編輯添加puppet.xxxx.com 解析(IP 域名)
錯誤2:
err:
Could not retrieve catalog from remote server: Connection refused - connect(2)
解決辦法:
這個是因為master 上的主程序沒有啟動的緣故,到master上查看程序puppetmaster 發現提示進程已死,
service
puppetmaster status
puppetmasterd 已死,但 pid 文件仍存
查看了下配置文件,發現是在修改fileserver.conf時修改錯誤導致的,也就是說當遇到這個錯誤提示的時候,要查看/etc/puppet目錄下的主配置文件是否有問題
文件fileserver.conf 中:[files]
path /var/lib/puppet/files
這個path下是放置我們要同步更新的文件