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

[经验分享] 深度分析puppet自带filebucket的备份恢复功能

[复制链接]

尚未签到

发表于 2018-8-2 13:27:02 | 显示全部楼层 |阅读模式
  puppet交流网站 www.kisspuppet.com
  日常情况下都是通过puppetmaster端进行推送变更,推送可以用MC实现,至于变更的回滚可以通过SVN活该Git辅助实现。
  存在这样一种情况,在一个复杂的环境中,存在多个管理员,而你是负责变更推送的,他们只是做应用的,很多时候是需要登录系统权限的,有一次,一个管理员为了满足他的应用并没有告知给你,登录到系统之后,修改了一个配置文件,完后也没有保存,而这个配置文件恰恰是你这边puppetmaster管理的配置文件,在你做puppet推送之后,那个管理员的配置文件被还原了。而那个管理员发现应用出了问题,要求你给他还原,你如何做呢?
  答案是可以通过filebucket功能完成,那么那么多机器,如何集中管理这些单版本呢。
1、首先定义filebucket模块
  要求所有节点都将被修改的配置文件保存至本地的/puppet/version/hosts/${fact_certname},其中变量fact_cartname为获取的certname名自定义的fact变量,如何自定义fact可参考http://kisskisspuppet.com/2013/11/15/my-fact/
[root@linuxmaster1poc manifests]# cat site.pp  import 'nodes/*.pp'
  $puppetserver = ‘puppetmaster.kisspuppet.com’
  
filebucket { ‘main’:
  
path => "/puppet/version/hosts/${fact_certname}",
  }
  备注:有以上模块之后,只要在file模块中添加backup => 'main',,那么这个文件就会被保存到以上目录中。
2、定义clientbucketdir和bucketdir
  参数clientbucketdir为当file模块中没有定义backup => 'main',时被保存的路径,默认在/var/lib/puppet/clientbucket
  参数bucketdir为使用puppet filebucket backup [file]保存的路径
[root@linux57poc ~]# cat /etc/puppet/puppet.conf  
[main]
  user = puppet
  group = puppet
  vardir = /var/lib/puppet
  logdir = /var/log/puppet
  rundir = /var/run/puppet
  ssldir = $vardir/ssl
  pluginsync = true
  clientbucketdir = /puppet/version/hosts/puppet_linux57poc.kisspuppet.com
  bucketdir = /puppet/version/hosts/puppet_linux57poc.kisspuppet.com
  
[agent]
  server = puppetmaster.kisspuppet.com
  classfile = $vardir/classes.txt
  localconfig = $vardir/localconfig
  runinterval=86400
  report = true
  authconfig = /etc/puppet/namespaceauth.conf
  usecacheonfailure = false
  certname = puppet_linux57poc.kisspuppet.com
  environment = production
  
#    listen = true
  
#    puppetport = 8139
  
#    bindaddress = 192.168.100.125
  3、file模块中添加 backup => 'main',
class puppet_linux57poc{  include puppet_linux57poc::motd,puppet_linux57poc::facts
  
}
  
class puppet_linux57poc::motd{
  package{ setup:
  ensure => present,
  }
  file{ "/etc/motd":
  owner => "root",
  group => "root",
  mode => 0400,
  content => template("puppet_linux57poc/motd.erb"),
  backup => 'main',
  require => Package["setup"],
  }
  
}
  
class puppet_linux57poc::facts{
  file{ "/etc/mcollective/facts.txt":
  owner => "root",
  group => "root",
  mode => 0400,
  content => template("puppet_linux57poc/facts.txt.erb"),
  backup => 'main',
  }
  
}
4、测试filebucket的恢复功能
  修改节点被管理的配置文件/etc/motd,然后运行puppet命令还原
[root@linux57poc ~]# echo aa>>/etc/motd  
[root@linux57poc ~]# puppet agent -t
  
info: Retrieving plugin
  
info: Loading facts in /var/lib/puppet/lib/facter/fact_apply.rb
  
info: Caching catalog for puppet_linux57poc.kisspuppet.com
  
info: Applying configuration version '1386061716'
  
notice: /Stage[main]/Mcollective::Facter/File[/etc/mcollective/facts.yaml]/content:
  
--- /etc/mcollective/facts.yaml    2013-12-03 17:26:35.000000000 +0800
  
+++ /tmp/puppet-file20131203-14159-i1qgrq-0    2013-12-03 17:56:59.000000000 +0800
  
@@ -1,89 +1,89 @@
  
。。。
  
info: FileBucket adding {md5}3997ee041b3277fda12dbd849fac47e7
  
info: /Stage[main]/Mcollective::Facter/File[/etc/mcollective/facts.yaml]: Filebucketed /etc/mcollective/facts.yaml to main with sum 3997ee041b3277fda12dbd849fac47e7
  
notice: /Stage[main]/Puppet_linux57poc::Motd/File[/etc/motd]/content:
  
--- /etc/motd    2013-12-03 17:56:49.000000000 +0800
  
+++ /tmp/puppet-file20131203-14159-1c90psx-0    2013-12-03 17:56:59.000000000 +0800
  
@@ -7,4 +7,3 @@
  rubyversion = 1.8.7
  ....................
  ------------------------------------------------
  
-aa
  
info: FileBucket adding {md5}6db65f0eb756ee96ef8e615e914fa0ee
  
info: /Stage[main]/Puppet_linux57poc::Motd/File[/etc/motd]: Filebucketed /etc/motd to main with sum 6db65f0eb756ee96ef8e615e914fa0ee
  
notice: /Stage[main]/Puppet_linux57poc::Motd/File[/etc/motd]/content: content changed '{md5}6db65f0eb756ee96ef8e615e914fa0ee' to '{md5}7c6613a110541a050c8a8f51fc89dab2'
  
notice: Finished catalog run in 0.69 seconds
  可以看到/etc/motd的MD5值从'6db65f0eb756ee96ef8e615e914fa0ee'变成'7c6613a110541a050c8a8f51fc89dab2'
[root@linux57poc ~]# ll /puppet/version/hosts/puppet_linux57poc.kisspuppet.com/6/d/b/6/5/f/0/e/6db65f0eb756ee96ef8e615e914fa0ee/  
total 8
  
-r--r----- 1 nfsnobody nfsnobody 311 Dec  3 17:56 contents
  
-rw-r----- 1 nfsnobody nfsnobody  10 Dec  3 17:56 paths
  通过puppet filebucket恢复
[root@linux57poc ~]# puppet filebucket --local backup /etc/motd  
/etc/motd: 6db65f0eb756ee96ef8e615e914fa0ee
  
[root@linux57poc ~]# ll /puppet/version/hosts/puppet_linux57poc.kisspuppet.com/6/d/b/6/5/f/0/e/6db65f0eb756ee96ef8e615e914fa0ee/
  
total 8
  
-r--r----- 1 nfsnobody nfsnobody 311 Dec  3 17:56 contents
  
-rw-r----- 1 nfsnobody nfsnobody  10 Dec  3 17:56 paths
  
[root@linux57poc ~]#
  
[root@linux57poc ~]# >/etc/motd
  
[root@linux57poc ~]# puppet filebucket --local restore  /etc/motd  6db65f0eb756ee96ef8e615e914fa0ee
  
[root@linux57poc ~]# cat /etc/motd
  
------------a few of facter values-------------
  
myhostname = linux57poc
  
eth0_ip = 192.168.100.125
  
kernel = 2.6.18-274.el5

  
system>  
puppetversion = 2.7.23
  
rubyversion = 1.8.7
  
....................
  
------------------------------------------------
  
aa
  
[root@linux57poc ~]#
  如何集中管理呢,可以将所有节点那个目录挂在到一台服务器上,这样就集中了,然后可以通过扫描命令进行查看
[root@linuxreportpoc ~]# ll /puppet/version/hosts  
total 12
  
drwxr-x--- 12 nfsnobody nfsnobody 4096 Dec  3 17:56 puppet_linux57poc.kisspuppet.com
  
drwxr-x--- 10 nfsnobody nfsnobody 4096 Dec  3 17:08 puppet_linux58poc.kisspuppet.com
  
drwxr-x--- 11 nfsnobody nfsnobody 4096 Dec  3 17:09 puppet_linux64poc.kisspuppet.com

运维网声明 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-545430-1-1.html 上篇帖子: puppet 管理tomcat时 根据服务器的内存来设置Xms等jvm启动参数 下篇帖子: puppet应用原理及安装部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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