MCollective結合自定義facter對puppet節點進行分類觸發操作

科技小先鋒發表於2017-11-17

實驗環境:

puppetserver.rsyslog.org

MCollective客戶端+ACtiveMQ服務端+Puppet服務端


agent1.rsyslog.org

MCollective服務端+Puppet客戶端

應用:apache


agent2.rsyslog.org

MCollective服務端+Puppet客戶端

應用:apache+mysql


agent3.rsyslog.org

MCollective服務端+Puppet客戶端

應用:php


實驗過程:

一、定義伺服器變數列表

所有伺服器變數列表

MY_APPLY1=apache

MY_APPLY2=mysql

MY_APPLY3=php

建議新增到所有伺服器的/etc/profile檔案中,然後source

主機變數:agent1.rsyslog.org

vim /etc/profile

MY_APPLY1=apache

export MY_APPLY1

export FACTERLIB=/var/lib/puppet/lib/facter

[root@agent1 ~]# source /etc/profile


主機變數:agent2.rsyslog.org

vim /etc/profile

MY_APPLY1=apache

MY_APPLY2=mysql

export MY_APPLY1

export MY_APPLY2

export FACTERLIB=/var/lib/puppet/lib/facter


主機變數:agent3.rsyslog.org

vim /etc/profile

MY_APPLY3=php

export MY_APPLY3

export FACTERLIB=/var/lib/puppet/lib/facter

二、自定義facter

1、建立目錄結構

[root@puppetserver modules]# mkdir public/{modules,manifests,files,lib/facter}  -p


2、伺服器和節點都開啟模組中的外掛功能

[root@puppetserver public]# vim /etc/puppet/puppet.conf

[main]

   pluginsync = true

3、編寫自定義fact

[root@puppetserver public]# vim /etc/puppet/modules/public/lib/facter/my_apply1.rb 

# my_apply1.rb

#

Facter.add(“my_apply1”) do

  setcode do

      Facter::Util::Resolution.exec(`/bin/echo $MY_APPLY1`)

    end

end

[root@puppetserver public]# vim /etc/puppet/modules/public/lib/facter/my_apply2.rb

# my_apply2.rb

#

Facter.add(“my_apply2”) do

  setcode do

      Facter::Util::Resolution.exec(`/bin/echo $MY_APPLY2`)

    end

end

[root@puppetserver public]# vim /etc/puppet/modules/public/lib/facter/my_apply3.rb

# my_apply3.rb

#

Facter.add(“my_apply3”) do

  setcode do

      Facter::Util::Resolution.exec(`/bin/echo $MY_APPLY3`)

    end

end


4、本地建立環境變數

[root@puppetserver public]# export FACTERLIB=/etc/puppet/modules/public/lib/facter


5、測試fact(如果不正常,會顯示除錯資訊)因為本機並未定義,所有沒有顯示結果

[root@puppetserver facter]# facter my_apply1

[root@puppetserver facter]# facter my_apply2

[root@puppetserver facter]# facter my_apply3


6、伺服器上執行一次puppet程式,只下放自定義的facter

[root@puppetserver facter]# mco puppet -v runonce


7、檢視任意節點目錄下是否下載了自定義的rb模版

[root@agent2 ~]# ll /var/lib/puppet/lib/facter

total 20

-rw-r–r– 1 root root 125 Aug 26 11:19 backup_date.rb

-rw-r–r– 1 root root 194 Aug 26 11:19 my_apply1.rb

-rw-r–r– 1 root root 132 Aug 26 11:19 my_apply2.rb

-rw-r–r– 1 root root 132 Aug 26 11:19 my_apply3.rb


8、重啟所有節點的mcollective服務(可通過puppet資源實現)

/etc/rc.d/init.d/mcollective restart


三、測試自定義節點是否能夠被使用

1、節點端測試

[root@agent1 ~]# facter my_apply1

apache

[root@agent1 ~]# facter my_apply2

[root@agent1 ~]# facter my_apply3


[root@agent2 ~]# facter my_apply3

[root@agent2 ~]# facter my_apply2

mysql

[root@agent2 ~]# facter my_apply1

apache


[root@agent3 ~]# facter my_apply1

[root@agent3 ~]# facter my_apply2

[root@agent3 ~]# facter my_apply3

php


2、MCollective客戶端測試

[root@puppetserver facter]# mco inventory agent1.rsyslog.org  | grep my_apply

     my_apply1 => apache

[root@puppetserver facter]# mco inventory agent2.rsyslog.org  | grep my_apply

     my_apply1 => apache

     my_apply2 => mysql

[root@puppetserver facter]# mco inventory agent3.rsyslog.org  | grep my_apply

     my_apply3 => php


3、通過自定義的facter進行過濾執行puppetd服務

3.1、只執行變數my_apply3=`php`的所有節點     

[root@puppetserver facter]# mco puppet -v runonce  mco facts -v –with-fact  my_apply3=`php`

Discovering hosts using the mc method for 2 second(s) …. 1


* [ ============================================================> ] 1 / 1



agent3.rsyslog.org                     : OK

   {:summary=>      “Started a background Puppet run using the `puppet agent –onetime –daemonize –color=false –splay –splaylimit 30` command”}




—- rpc stats —-

          Nodes: 1 / 1

    Pass / Fail: 1 / 0

     Start Time: Mon Aug 26 11:56:53 +0800 2013

 Discovery Time: 2020.83ms

     Agent Time: 1368.84ms

     Total Time: 3389.67ms


3.2、只執行變數 my_apply1=`apache`和 my_apply2=`mysql`的所有節點

[root@puppetserver facter]# mco puppet -v runonce   rpc –np -F my_apply1=`apache` -F my_apply2=`mysql`

Discovering hosts using the mc method for 2 second(s) …. 1


agent2.rsyslog.org                     : OK

   {:summary=>      “Started a background Puppet run using the `puppet agent –onetime –daemonize –color=false –splay –splaylimit 30` command”}




—- rpc stats —-

          Nodes: 1 / 1

    Pass / Fail: 1 / 0

     Start Time: Mon Aug 26 11:58:07 +0800 2013

 Discovery Time: 2003.38ms

     Agent Time: 1051.53ms

     Total Time: 3054.91ms

本文轉自凌激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/1282725,如需轉載請自行聯絡原作者


相關文章