您好,登錄后才能下訂單哦!
今天小編給大家分享一下puppet的工作原理是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
什么是Puppet ?
puppet 是一種Linux、Unix 平臺的集中配置管理系統,使用自有的puppet 描述語言,可管理配置文件、用戶、cron 任務、軟件包、系統服務等。puppet 把這些系統實體稱之為資源,puppet的設計目標是簡化對這些資源的管理以及妥善處理資源間的依賴關系。 puppet 采用C/S 星狀的結構,所有的客戶端和一個或幾個服務器交互。
每個客戶端周期的(默認半個小時)向服務器發送請求,獲得其最新的配置信息,保證和該配 置信息同步。每個puppet 客戶端每半小時(可以設置runinterval=30)連接一次服務器端,下載最新的配置文件,并且嚴格按照配置文件來配置服務器. 配置完成以后,puppet 客戶 端可以反饋給服務器端一個消息. 如果出錯,也會給服務器端反饋一個消息.
為什么要使用puppet?
當你去管理10 臺服務器,你肯定會說小意思。沒有任何壓力。
當你去管理100 臺服務器,你肯定也會說小意思。
當你去管理 1000+臺服務器呢?你是不是就頭痛了,不同的機器,不同的系統,使用不同的軟件版本,配置也不一樣。這樣為了提升效率。Puppet 就派上了大用場。
Puppet 后臺運行的時候默認是半小時執行一次,不是很方便修改。可以考慮不讓它 在后臺跑而是使用crontab 來調用。這樣可以精確控制每臺客戶端的執行時間。分散 執行時間也可以減輕壓力
Puppet 的工作細節分成如下幾個步驟:
1、客戶端puppetd 調用facter ,facter 會探測出這臺主機的一些變量如主機名、內存大小、IP 地址等。然后puppetd 把這些信息發送到服務器端。
2、服務器端的puppetmaster 檢測到客戶端的主機名,然后會到manifest 里面對應的node 配置,然后對這段內容進行解析,facter 送過來的信息可以作為變量進行處理的,node 牽涉到的代碼才解析,其它的代碼不不解析,解析分幾個過程:語法檢查、然后會生成一個中間的偽代碼,然后再把偽代碼發給客戶機。
3 、客戶端接收到偽代碼之后就會執行,客戶端再把執行結果發送給服務器。
4、服務器再把客戶端的執行結果寫入日志。
Puppet組織結構:
為什么要說puppet 的組織結構?當你安裝完puppet 后,你會發現你不知道它的目錄結構是什么樣的。要如何組織,怎么樣才算合理?puppet 目錄在/etc/puppet 下面。
樹結構如下:
|-- puppet.conf #主配置配置文件 |-- fileserver.conf #文件服務器配置文件 |-- auth.conf #認證配置文件 |-- autosign.conf # 自動驗證配置文件 |-- tagmail.conf #郵件配置文件(將錯誤信息發送) |-- manifests #文件存儲目錄(puppet 會先讀取該目錄的.PP 文件) | --nodes | | | puppetclient.pp | |-- site.pp #定義puppet 相關的變量和默認配置。 | |-- modules.pp #加載class 類模塊文件(include syslog) |-- modules #定義模塊 | -- syslog #以syslog 為例 | |-- file | |-- manifests | | |-- init.pp #class 類配置 | |--- templates #模塊配置目錄 | | |-- syslog.erb #erb 模板
然后開始安裝,這里選擇的是源碼安裝,puppet是運行在ruby環境的,所以需要安裝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文件解析
安裝完成后需要把主機名和IP寫入hosts,因為puppet是根據主機名來識別的,所以主機名對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
完成后服務端運行
[root@cyy100 templates]# puppetmasterd
客戶端運行:
[root@cyy111 ~]# puppetd --server cyy100 --test
?
PS:這里說一下的就是客戶端第一次向服務端請求證書的時候要保證兩邊的時間是同步的,要不會報錯
err: Could not retrieve catalog from remote server: certificate verify failed出現這個錯誤首先同步時間:
/usr/sbin/ntpdate time.nist.gov然后刪除兩邊的SSL證書
rm -f /var/lib/puppet/ssl/ca/signed/caotest-2.cym.pem ###服務端rm -rf /var/lib/puppet/ssl/ ###客戶端再重新驗證
[root@cyy111 ~]# puppetd --server cyy100 --test
沒什么問題應該成功了,puppet默認是半小時執行一次,個人推薦用定時任務來執行
可以先隨便寫個類來驗證下是否成功
[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里面寫入以下內容
class po { file { "/tmp/test.txt": ensure => present, group => "root", owner => "root", mode => "0644",source => "puppet:///test/test.txt"} }
然后在/etc/puppet/modules/est/files下面創建一個test.txt文件,往里面寫入:
hello world !
在/etc/puppet/manifests/modules.pp 寫入:
import "test"
在/etc/puppet/manifests/node里面寫入:
node 'cyy111'{ include po }
然后在客戶端執行
puppetd --server cyy100 --test
就可以看到test.txt文件下發到客戶端的/tmp目錄下了。
以上就是“puppet的工作原理是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。