新聞中心
puppet是一個(gè)IT基礎(chǔ)設(shè)施自動(dòng)化管理工具,它能夠幫助系統(tǒng)管理員管理基礎(chǔ)設(shè)施的整個(gè)生命周期: 供應(yīng)、配置、聯(lián)動(dòng)及報(bào)告,基于puppet ,可實(shí)現(xiàn)自動(dòng)化重復(fù)任務(wù)、快速部署關(guān)鍵性應(yīng)用以及在本地或云端完成主動(dòng)管理變更和快速擴(kuò)展架構(gòu)規(guī)模等,下面為大家詳細(xì)講解一下puppet。

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、吳橋網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為吳橋等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Puppet 的介紹
什么是Puppet ?
puppet 是一種Linux、Unix 平臺(tái)的集中配置管理系統(tǒng),使用自有的puppet 描述語(yǔ)言,可管理配置文件、用戶、cron 任務(wù)、軟件包、系統(tǒng)服務(wù)等。puppet 把這些系統(tǒng)實(shí)體稱之為資源,puppet的設(shè)計(jì)目標(biāo)是簡(jiǎn)化對(duì)這些資源的管理以及妥善處理資源間的依賴關(guān)系。 puppet 采用C/S 星狀的結(jié)構(gòu),所有的客戶端和一個(gè)或幾個(gè)服務(wù)器交互。
每個(gè)客戶端周期的(默認(rèn)半個(gè)小時(shí))向服務(wù)器發(fā)送請(qǐng)求,獲得其最新的配置信息,保證和該配 置信息同步。每個(gè)puppet 客戶端每半小時(shí)(可以設(shè)置runinterval=30)連接一次服務(wù)器端,下載最新的配置文件,并且嚴(yán)格按照配置文件來配置服務(wù)器. 配置完成以后,puppet 客戶 端可以反饋給服務(wù)器端一個(gè)消息. 如果出錯(cuò),也會(huì)給服務(wù)器端反饋一個(gè)消息.
為什么要使用puppet?
當(dāng)你去管理10 臺(tái)服務(wù)器,你肯定會(huì)說小意思。沒有任何壓力。
當(dāng)你去管理100 臺(tái)服務(wù)器,你肯定也會(huì)說小意思。
當(dāng)你去管理 1000+臺(tái)服務(wù)器呢?你是不是就頭痛了,不同的機(jī)器,不同的系統(tǒng),使用不同的軟件版本,配置也不一樣。這樣為了提升效率。Puppet 就派上了大用場(chǎng)。
Puppet 架構(gòu)
puppet工作原理:
Puppet 后臺(tái)運(yùn)行的時(shí)候默認(rèn)是半小時(shí)執(zhí)行一次,不是很方便修改。可以考慮不讓它 在后臺(tái)跑而是使用crontab 來調(diào)用。這樣可以精確控制每臺(tái)客戶端的執(zhí)行時(shí)間。分散 執(zhí)行時(shí)間也可以減輕壓力
Puppet 的工作細(xì)節(jié)分成如下幾個(gè)步驟:
1、客戶端puppetd 調(diào)用facter ,facter 會(huì)探測(cè)出這臺(tái)主機(jī)的一些變量如主機(jī)名、內(nèi)存大小、IP 地址等。然后puppetd 把這些信息發(fā)送到服務(wù)器端。
2、服務(wù)器端的puppetmaster 檢測(cè)到客戶端的主機(jī)名,然后會(huì)到manifest 里面對(duì)應(yīng)的node 配置,然后對(duì)這段內(nèi)容進(jìn)行解析,facter 送過來的信息可以作為變量進(jìn)行處理的,node 牽涉到的代碼才解析,其它的代碼不不解析,解析分幾個(gè)過程:語(yǔ)法檢查、然后會(huì)生成一個(gè)中間的偽代碼,然后再把偽代碼發(fā)給客戶機(jī)。
3 、客戶端接收到偽代碼之后就會(huì)執(zhí)行,客戶端再把執(zhí)行結(jié)果發(fā)送給服務(wù)器。
4、服務(wù)器再把客戶端的執(zhí)行結(jié)果寫入日志。
Puppet組織結(jié)構(gòu):
為什么要說puppet 的組織結(jié)構(gòu)?當(dāng)你安裝完puppet 后,你會(huì)發(fā)現(xiàn)你不知道它的目錄結(jié)構(gòu)是什么樣的。要如何組織,怎么樣才算合理?puppet 目錄在/etc/puppet 下面。
樹結(jié)構(gòu)如下:
|-- puppet.conf #主配置配置文件
|-- fileserver.conf #文件服務(wù)器配置文件
|-- auth.conf #認(rèn)證配置文件
|-- autosign.conf # 自動(dòng)驗(yàn)證配置文件
|-- tagmail.conf #郵件配置文件(將錯(cuò)誤信息發(fā)送)
|-- manifests #文件存儲(chǔ)目錄(puppet 會(huì)先讀取該目錄的.PP 文件)
| --nodes
| | | puppetclient.pp
| |-- site.pp #定義puppet 相關(guān)的變量和默認(rèn)配置。
| |-- modules.pp #加載class 類模塊文件(include syslog)
|-- modules #定義模塊
| -- syslog #以syslog 為例
| |-- file
| |-- manifests
| | |-- init.pp #class 類配置
| |--- templates #模塊配置目錄
| | |-- syslog.erb #erb 模板
基本介紹到這,在這里也分享下PUPPET的中文WIKI:http://puppet.wikidot.com/
E文不錯(cuò)的也可以直接到官網(wǎng)看:http://www.puppetlabs.com/
環(huán)境搭建
然后開始安裝,這里選擇的是源碼安裝,puppet是運(yùn)行在ruby環(huán)境的,所以需要安裝ruby
上傳ruby-1.8.6,facter-1.6.0,puppet-2.7.1到/tmp目錄(這3個(gè)安裝包見附件)
tar zxvf ruby-1.8.6-p114.tar.gz
cd ruby-1.8.6-p114
./configure
make
make install
cd /tmp
tar zxvf facter-1.6.0.tar.gz
cd facter-1.6.0
ruby install.rb
cd /tmp
tar zxvf puppet-2.7.1.tar.gz
cd puppet-2.7.1
ruby install.rb
mkdir -p /etc/puppet &&cp conf/redhat/* /etc/puppet/ && cd ~
添加host文件解析
安裝完成后需要把主機(jī)名和IP寫入hosts,因?yàn)閜uppet是根據(jù)主機(jī)名來識(shí)別的,所以主機(jī)名對(duì)puppet來說比較重要:
echo "192.168.1.100 puppetmaster" >> /etc/hosts
echo "192.168.1.200 app_1 " >> /etc/hosts
開了防火墻的需要在防火墻里面添加8140端口
-A RH-Firewall-1-INPUT -s 192.168.0.0/255.255.0.0 -p tcp -m tcp --dport 8140 -j ACCEPT
完成后服務(wù)端運(yùn)行
[root@cyy100 templates]# puppetmasterd
客戶端運(yùn)行:
[root@cyy111 ~]# puppetd --server cyy100 --test
PS:這里說一下的就是客戶端第一次向服務(wù)端請(qǐng)求證書的時(shí)候要保證兩邊的時(shí)間是同步的,要不會(huì)報(bào)錯(cuò)
err: Could not retrieve catalog from remote server: certificate verify failed出現(xiàn)這個(gè)錯(cuò)誤首先同步時(shí)間:
/usr/sbin/ntpdate time.nist.gov然后刪除兩邊的SSL證書
rm -f /var/lib/puppet/ssl/ca/signed/caotest-2.cym.pem ###服務(wù)端 rm -rf /var/lib/puppet/ssl/ ###客戶端再重新驗(yàn)證
[root@cyy111 ~]# puppetd --server cyy100 --test
沒什么問題應(yīng)該成功了,puppet默認(rèn)是半小時(shí)執(zhí)行一次,個(gè)人推薦用定時(shí)任務(wù)來執(zhí)行
實(shí)驗(yàn)驗(yàn)證
可以先隨便寫個(gè)類來驗(yàn)證下是否成功
[root@cyy100 templates]# cd /etc/puppet
[root@cyy100 puppet]# cd modules/
[root@cyy100 modules]# mkdir test/
[root@cyy100 modules]# mkdir test/manifests/
[root@cyy100 modules]# mkdir test/files/
[root@cyy100 modules]#vi test/files/init.pp
在init.pp里面寫入以下內(nèi)容
class po {
file { "/tmp/test.txt":
ensure => present,
group => "root",
owner => "root",
mode => "0644",
source => "puppet:///test/test.txt"
}
}
然后在/etc/puppet/modules/est/files下面創(chuàng)建一個(gè)test.txt文件,往里面寫入:
hello world !
在/etc/puppet/manifests/modules.pp 寫入:
import "test"
在/etc/puppet/manifests/node里面寫入:
node 'cyy111'{
include po
}
然后在客戶端執(zhí)行
puppetd --server cyy100 --test
就可以看到test.txt文件下發(fā)到客戶端的/tmp目錄下了。
分享題目:詳解puppet
網(wǎng)站路徑:http://www.5511xx.com/article/dhgdgeg.html


咨詢
建站咨詢
