溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

puppet的工作原理是什么

發(fā)布時(shí)間:2022-02-15 15:51:50 來源:億速云 閱讀:139 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下puppet的工作原理是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Puppet 的介紹

什么是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 架構(gòu)

puppet的工作原理是什么

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 模板

環(huán)境搭建

然后開始安裝,這里選擇的是源碼安裝,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í)行

實(shí)驗(yàn)驗(yàn)證

可以先隨便寫個類來驗(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è)資訊頻道。

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. puppet 初識
  2. puppet 部署

免責(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)容。

AI