MCollective結合自定義facter對puppet節點進行分類觸發操作
實驗環境:
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,如需轉載請自行聯絡原作者
相關文章
- 使用jaxp解析器dom方式對xml節點進行操作XML
- 自定義View以及事件分發總結View事件
- python:利用iloc語句對列表的分類變數進行操作Python變數
- layui tree 對節點進行搜尋UI
- 劉嘉:腦與人工智慧的結合是人類進化的節點人工智慧
- App.config自定義節點讀取APP
- [BUG反饋]新增分類時無法繫結自定義模型模型
- js 建立和觸發事件 和 自定義事件JS事件
- Android自定義View之事件分發機制總結AndroidView事件
- springboot讀取自定義配置檔案節點Spring Boot
- vue3+TS 自定義指令:長按觸發繫結的函式Vue函式
- Python如何對浮點數進行取整操作?Python
- Hadoop節點的分類與作用Hadoop
- 自定義梯形view與XRecyclerView的結合View
- 將帶標籤的點雲輸入並進行歐幾里得聚類處理(自定義點雲)聚類
- dom4j 根據xml節點路徑查詢節點,找到對應的目標節點下的子節點,對節點Text值進行修改XML
- 【朝花夕拾】Android自定義View篇之(八)多點觸控AndroidView
- 自定義有多個按鈕節點的SliderViewIDEView
- iOS-對圖片操作---新增到自定義相簿iOS
- (五)自定義按鈕模板和設定觸發器觸發器
- 使用 Laravel Resource 類時自定義分頁資訊Laravel
- Electron結合React和TypeScript進行開發ReactTypeScript
- 詳解Java鎖的升級與對比(1)——鎖的分類與細節(結合部分原始碼)Java原始碼
- 觸發JVM進行Full GC的情況及應對策略JVMGC
- Mac電腦如何對檔案進行分類和整理Mac
- 自定義Map集合,將重複的鍵值對不進行覆蓋而是進行疊加
- Gradle進階:1: 結合spring boot進行web開發GradleSpring BootWeb
- Laravel Exception結合自定義Log服務的使用LaravelException
- YCProgress自定義百分比進度條
- 使用 Transformers 進行圖分類ORM
- 【爬坑日記】iview使用render自定義渲染觸發事件View事件
- 手把手教你快速構建自定義分類器
- 基於Tensorflow + Opencv 實現CNN自定義影像分類OpenCVCNN
- 自定義異常類
- python的tkinter程式設計(四)GUI介面裡面使用類進行開發,也就是自定義元件Python程式設計GUI元件
- 如何使用Python、Transformers和scikit-learn對文字進行分類?PythonORM
- CoreText進階(七) 新增自定義View和對其View
- 自定義註解進行資料脫敏
- SpringBoot JPA查詢對映到自定義實體類Spring Boot