您好,登錄后才能下訂單哦!
今天小編給大家分享一下puppet的工作原理是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
什么是Puppet ?
puppet 是一種Linux、Unix 平臺的集中配置管理系統(tǒng),使用自有的puppet 描述語言,可管理配置文件、用戶、cron 任務(wù)、軟件包、系統(tǒng)服務(wù)等。puppet 把這些系統(tǒng)實(shí)體稱之為資源,puppet的設(shè)計(jì)目標(biāo)是簡化對這些資源的管理以及妥善處理資源間的依賴關(guān)系。 puppet 采用C/S 星狀的結(jié)構(gòu),所有的客戶端和一個或幾個服務(wù)器交互。
每個客戶端周期的(默認(rèn)半個小時(shí))向服務(wù)器發(fā)送請求,獲得其最新的配置信息,保證和該配 置信息同步。每個puppet 客戶端每半小時(shí)(可以設(shè)置runinterval=30)連接一次服務(wù)器端,下載最新的配置文件,并且嚴(yán)格按照配置文件來配置服務(wù)器. 配置完成以后,puppet 客戶 端可以反饋給服務(wù)器端一個消息. 如果出錯,也會給服務(wù)器端反饋一個消息.
為什么要使用puppet?
當(dāng)你去管理10 臺服務(wù)器,你肯定會說小意思。沒有任何壓力。
當(dāng)你去管理100 臺服務(wù)器,你肯定也會說小意思。
當(dāng)你去管理 1000+臺服務(wù)器呢?你是不是就頭痛了,不同的機(jī)器,不同的系統(tǒng),使用不同的軟件版本,配置也不一樣。這樣為了提升效率。Puppet 就派上了大用場。
Puppet 后臺運(yùn)行的時(shí)候默認(rèn)是半小時(shí)執(zhí)行一次,不是很方便修改??梢钥紤]不讓它 在后臺跑而是使用crontab 來調(diào)用。這樣可以精確控制每臺客戶端的執(zhí)行時(shí)間。分散 執(zhí)行時(shí)間也可以減輕壓力
Puppet 的工作細(xì)節(jié)分成如下幾個步驟:
1、客戶端puppetd 調(diào)用facter ,facter 會探測出這臺主機(jī)的一些變量如主機(jī)名、內(nèi)存大小、IP 地址等。然后puppetd 把這些信息發(fā)送到服務(wù)器端。
2、服務(wù)器端的puppetmaster 檢測到客戶端的主機(jī)名,然后會到manifest 里面對應(yīng)的node 配置,然后對這段內(nèi)容進(jìn)行解析,facter 送過來的信息可以作為變量進(jìn)行處理的,node 牽涉到的代碼才解析,其它的代碼不不解析,解析分幾個過程:語法檢查、然后會生成一個中間的偽代碼,然后再把偽代碼發(fā)給客戶機(jī)。
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 # 自動驗(yàn)證配置文件 |-- 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是運(yùn)行在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.gzcd ruby-1.8.6-p114 ./configure make make installcd /tmp tar zxvf facter-1.6.0.tar.gzcd facter-1.6.0 ruby install.rbcd /tmp tar zxvf puppet-2.7.1.tar.gzcd 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ī)名來識別的,所以主機(jī)名對puppet來說比較重要:
echo "192.168.1.100 puppetmaster" >> /etc/hostsecho "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ù)端請求證書的時(shí)候要保證兩邊的時(shí)間是同步的,要不會報(bào)錯
err: Could not retrieve catalog from remote server: certificate verify failed出現(xiàn)這個錯誤首先同步時(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í)行一次,個人推薦用定時(shí)任務(wù)來執(zhí)行
可以先隨便寫個類來驗(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)建一個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的工作原理是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。