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

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、吳橋網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為吳橋等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Puppet 的介紹
什么是Puppet ?
puppet 是一種Linux、Unix 平臺的集中配置管理系統(tǒng),使用自有的puppet 描述語言,可管理配置文件、用戶、cron 任務(wù)、軟件包、系統(tǒng)服務(wù)等。puppet 把這些系統(tǒng)實體稱之為資源,puppet的設(shè)計目標(biāo)是簡化對這些資源的管理以及妥善處理資源間的依賴關(guān)系。 puppet 采用C/S 星狀的結(jié)構(gòu),所有的客戶端和一個或幾個服務(wù)器交互。
每個客戶端周期的(默認(rèn)半個小時)向服務(wù)器發(fā)送請求,獲得其最新的配置信息,保證和該配 置信息同步。每個puppet 客戶端每半小時(可以設(shè)置runinterval=30)連接一次服務(wù)器端,下載最新的配置文件,并且嚴(yán)格按照配置文件來配置服務(wù)器. 配置完成以后,puppet 客戶 端可以反饋給服務(wù)器端一個消息. 如果出錯,也會給服務(wù)器端反饋一個消息.
為什么要使用puppet?
當(dāng)你去管理10 臺服務(wù)器,你肯定會說小意思。沒有任何壓力。
當(dāng)你去管理100 臺服務(wù)器,你肯定也會說小意思。
當(dāng)你去管理 1000+臺服務(wù)器呢?你是不是就頭痛了,不同的機器,不同的系統(tǒng),使用不同的軟件版本,配置也不一樣。這樣為了提升效率。Puppet 就派上了大用場。
Puppet 架構(gòu)
puppet工作原理:
Puppet 后臺運行的時候默認(rèn)是半小時執(zhí)行一次,不是很方便修改??梢钥紤]不讓它 在后臺跑而是使用crontab 來調(diào)用。這樣可以精確控制每臺客戶端的執(zhí)行時間。分散 執(zhí)行時間也可以減輕壓力
Puppet 的工作細(xì)節(jié)分成如下幾個步驟:
1、客戶端puppetd 調(diào)用facter ,facter 會探測出這臺主機的一些變量如主機名、內(nèi)存大小、IP 地址等。然后puppetd 把這些信息發(fā)送到服務(wù)器端。
2、服務(wù)器端的puppetmaster 檢測到客戶端的主機名,然后會到manifest 里面對應(yīng)的node 配置,然后對這段內(nèi)容進行解析,facter 送過來的信息可以作為變量進行處理的,node 牽涉到的代碼才解析,其它的代碼不不解析,解析分幾個過程:語法檢查、然后會生成一個中間的偽代碼,然后再把偽代碼發(fā)給客戶機。
3 、客戶端接收到偽代碼之后就會執(zhí)行,客戶端再把執(zhí)行結(jié)果發(fā)送給服務(wù)器。
4、服務(wù)器再把客戶端的執(zhí)行結(jié)果寫入日志。
Puppet組織結(jié)構(gòu):
為什么要說puppet 的組織結(jié)構(gòu)?當(dāng)你安裝完puppet 后,你會發(fā)現(xiàn)你不知道它的目錄結(jié)構(gòu)是什么樣的。要如何組織,怎么樣才算合理?puppet 目錄在/etc/puppet 下面。
樹結(jié)構(gòu)如下:
|-- puppet.conf #主配置配置文件
|-- fileserver.conf #文件服務(wù)器配置文件
|-- auth.conf #認(rèn)證配置文件
|-- autosign.conf # 自動驗證配置文件
|-- tagmail.conf #郵件配置文件(將錯誤信息發(fā)送)
|-- manifests #文件存儲目錄(puppet 會先讀取該目錄的.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文不錯的也可以直接到官網(wǎng)看:http://www.puppetlabs.com/
環(huán)境搭建
然后開始安裝,這里選擇的是源碼安裝,puppet是運行在ruby環(huán)境的,所以需要安裝ruby
上傳ruby-1.8.6,facter-1.6.0,puppet-2.7.1到/tmp目錄(這3個安裝包見附件)
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文件解析
安裝完成后需要把主機名和IP寫入hosts,因為puppet是根據(jù)主機名來識別的,所以主機名對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ù)端運行
[root@cyy100 templates]# puppetmasterd
客戶端運行:
[root@cyy111 ~]# puppetd --server cyy100 --test
PS:這里說一下的就是客戶端第一次向服務(wù)端請求證書的時候要保證兩邊的時間是同步的,要不會報錯
err: Could not retrieve catalog from remote server: certificate verify failed出現(xiàn)這個錯誤首先同步時間:
/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/ ###客戶端再重新驗證
[root@cyy111 ~]# puppetd --server cyy100 --test
沒什么問題應(yīng)該成功了,puppet默認(rèn)是半小時執(zhí)行一次,個人推薦用定時任務(wù)來執(zhí)行
實驗驗證
可以先隨便寫個類來驗證下是否成功
[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)建一個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目錄下了。
新聞標(biāo)題:詳解puppet
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/dhgdgeg.html


咨詢
建站咨詢
