PUPPET使用(二)

實(shí)際生產(chǎn)使用中,默認(rèn)的puppet配置方式對(duì)應(yīng)復(fù)雜的產(chǎn)線使用場(chǎng)景會(huì)遇到各種問(wèn)題,業(yè)務(wù)多而雜,標(biāo)準(zhǔn)需求&&非標(biāo)需求之間的沖突,外購(gòu)系統(tǒng)&&內(nèi)部自研系統(tǒng)的沖突,會(huì)造成各種各樣的需求,所以在使用的時(shí)候會(huì)做一些修改,以下記錄一些常用的功能。

facter

facter是puppet跨平臺(tái)的信息收集工具,支持自定義,
使用facter -p 可以獲取到facter自帶的信息,如開機(jī)時(shí)間,OS版本等等,這些基礎(chǔ)信息非常有用,puppet可以基于這些內(nèi)置facts信息實(shí)現(xiàn)動(dòng)態(tài)配置

自定義facts

  • 添加配置,路徑可以自己定義,最后加到FACTERLIB的環(huán)境變量下即可,EP:/var/lib/puppet/my_fact/allusernum.rb
Facter.add(:users) do
setcode do
 %x{/bin/cat /etc/passwd |wc -l}.chomp
  end
end
  • 將配置路徑加到環(huán)境變量?jī)?nèi):
export FACTERLIB=/var/lib/puppet/my_fact/
  • 使用:
facter users
63

hiera

hiera 是個(gè)非常實(shí)用的功能,先來(lái)看下傳統(tǒng)puppet的配置方式,比如產(chǎn)線有100個(gè)應(yīng)用,每個(gè)應(yīng)用會(huì)對(duì)應(yīng)一個(gè)puppet的env,配置時(shí)候會(huì)發(fā)現(xiàn)這100個(gè)env里有相同的同步項(xiàng)(module),比如代碼路徑,日志路徑等等,但也會(huì)有不同的同步項(xiàng)目(module),如配置文件等,這樣就導(dǎo)致了相同的同步項(xiàng)需要放在100個(gè)env的目錄下,一旦相同的module有修改,相當(dāng)于要改100遍,更不要說(shuō)這100個(gè)應(yīng)用里也會(huì)存在部分相同的module,這種module和env相互勾連的情況,可想而知多難用。
hiera可以非常好的解決這個(gè)問(wèn)題,實(shí)現(xiàn)類似子類父類繼承的關(guān)系,一個(gè)module可以被多個(gè)env引用,并基于facts的變量值動(dòng)態(tài)識(shí)別環(huán)境

安裝配置hiera

  • 安裝
yum install hiera hiera-puppet -y
mv /etc/hiera.yaml /etc/puppet/
ln -s /etc/puppet/hiera.yaml /etc/hiera.yaml
ll /etc/hiera.yaml
  • 配置
#hiera 配置
cat /etc/puppet/hiera.yaml 
---
#定義配置文件格式
:backends:
  - yaml
:hierarchy:
  - common #一般編寫的是所有環(huán)境都需要使用的通用配置
  - "environment/%{::environment}" #基于環(huán)境的差異化配置
  - "osfamily/%{::osfamily}_%{::operatingsystem}" #基于操作系統(tǒng)以及版本的差異化配置
:yaml:
  :datadir:"/etc/puppet/hieradata" #存放上面hierarchy的配置路徑

#環(huán)境配置
cat /etc/puppet/environment/sa_common/manifests/site.pp
node default {
    hiera_inclue('basic_setting')
    hiera_inclue('env_setting')
    hiera_inclue('os_setting')
}

#所有環(huán)境需要的通用配置
cat /etc/puppet/hieradata/common.yaml
---
basic_setting:
  - basic_dns
  - basic_user
app_setting:
  - basic_app_cfg

#不同環(huán)境的特殊配置
cat /etc/puppet/hieradata/environment/sa_env.yaml
---
env_setting:
  - env_cfg
  - env_user

#不同OS版本的差異配置
cat /etc/puppet/hieradata/osfamily/RedHat_7.5.yaml
---
os_setting:
   - rh7_yumrepo

#上面的配置里存放的均是puppet的modules
ls /etc/puppet/modules/
basic_dns
basic_user
basic_app_cfg

最后在客戶端執(zhí)行puppet agent -t 同步時(shí),同步就會(huì)從comm開始自上而下進(jìn)行匹配同步,當(dāng)然實(shí)際產(chǎn)線運(yùn)用中,配置項(xiàng)會(huì)用的多的多,這邊只是記錄一下配置實(shí),避免忘記

mcollective

mco 框架,我們產(chǎn)線服務(wù)器數(shù)量大約高峰在1.6-1.8W臺(tái)VM+BM,平時(shí)在1.2W左右,大規(guī)模主機(jī)集群可以通過(guò)之前的橫向擴(kuò)展方式進(jìn)行部署,但我們有需求需要進(jìn)行短時(shí)間內(nèi)主動(dòng)推送,就會(huì)有問(wèn)題,比如產(chǎn)線6000臺(tái)主機(jī)需要同步配置文件A,另外6000臺(tái)需要同步配置文件B,需要在1小時(shí)內(nèi)完成,(雖然Slat-stack等類似可以很簡(jiǎn)單的完成。。但這里還是只先記錄puppet。。),這種場(chǎng)景下使用puppet kick 也不現(xiàn)實(shí),更別說(shuō)高版本的puppet 還把這個(gè)命令移除了。所以用mco的方式推送會(huì)比較好,mco說(shuō)白了就是一個(gè)推送框架,server端和client端都鏈接中間件(rabbitmq&&activemq)然后通過(guò)消息廣播的方式進(jìn)行命令下發(fā),mcoserver端支持客戶端的自動(dòng)發(fā)現(xiàn),以及推送的正則表達(dá)式,可以 基于facts的返回進(jìn)行推送,但實(shí)際使用下來(lái)并不是很穩(wěn)定,且廣播方式推送雖然很快,6000臺(tái)大約在1min內(nèi)能完成,但是由于使用的是異步方式,mco客戶端只會(huì)告訴server端我執(zhí)行了puppet同步,但同步結(jié)果卻不會(huì)返回,所以也存在一定局限性。

  • Rabbitmq

搭建省略。產(chǎn)線集群搭建可以參考之前的筆記

  • Mco服務(wù)端
yum install mcollective  mcollective-common -y #依賴rubygem-stomp、rubygems和ruby相關(guān)包,在puppet5.x版本中 mcollective 已經(jīng)隨puppet安裝,無(wú)需另外安裝

cat /etc/mcollective/server.cfg
topicprefix = /topic/
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective  #插件位置
logfile = /var/log/mcollective.log
loglevel = info
daemonize = 1
# Plugins
securityprovider = psk
plugin.psk = a36cd839414370e10fd281b8a39ada9 #MCollective通信共享密鑰,和MCollective客戶端保持一致
connector = stomp #通信協(xié)議
plugin.stomp.host =  21.66.127.1  #Middleware地址
plugin.stomp.port =  61613  #Middleware監(jiān)聽端口
plugin.stomp.user = mcollective  #Middleware通信賬號(hào)
plugin.stomp.password = secret #Middleware通信密碼
# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
/etc/rc.d/init.d/mcollective start
chkconfig mcollective on
  • Mco 客戶端
yum install mcollective  mcollective-common -y #依賴rubygem-stomp、rubygems和ruby相關(guān)包

cat /etc/mcollective/client.cfg
topicprefix = /topic/
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logger_type = console
loglevel = warn
# Plugins
securityprovider = psk
plugin.psk = a36cd839414370e10fd281b8a39ada9  #MCollective通信共享密鑰,和MCollective服務(wù)端保持一致
connector = stomp  #通信協(xié)議
plugin.stomp.host = 21.66.127.1  #Middleware地址
plugin.stomp.port = 61613  #Middleware監(jiān)聽端口
plugin.stomp.user = mcollective  #Middleware通信賬號(hào)
plugin.stomp.password = secret #Middleware通信密碼
# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
  • 通信
mco ping
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Puppet模塊Puppet部署master/agent模式Puppet多環(huán)境配置Puppet kick機(jī)制 一、...
    哈嘍別樣閱讀 551評(píng)論 0 1
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,283評(píng)論 0 5
  • Puppet的基本概念Puppet的資源Puppet的資源類型Puppet的變量Puppet的流程控制語(yǔ)句Pupp...
    哈嘍別樣閱讀 604評(píng)論 0 3
  • Puppet理論定義: Puppet 是一個(gè)跨平臺(tái)的集中化配置管理系統(tǒng),它使用自有的描述語(yǔ)言,可管理配置文件、用戶...
    屬于你的世界閱讀 1,091評(píng)論 0 2
  • 1.puppet 是什么 puppet是一個(gè)開源的軟件自動(dòng)化配置和部署工具,很多大型IT公司均在使用puppet對(duì)...
    milo_e1ce閱讀 5,120評(píng)論 0 4

友情鏈接更多精彩內(nèi)容