设为首页 收藏本站
查看: 807|回复: 0

[经验分享] MCollective结合自定义facter对puppet节点进行分类触发操作

[复制链接]

尚未签到

发表于 2018-8-3 06:01:30 | 显示全部楼层 |阅读模式
  MCollective结合自定义facter对puppet节点进行分类触发操作
  
  如果需要交流puppet 可加入puppet技术交流QQ群  296934942
  实验环境:
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545525-1-1.html 上篇帖子: Puppet集中配置管理系统安装与配置 下篇帖子: 通过部署MCollective+ActiveMQ模块更安全高效的触发puppet更新
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表