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

[经验分享] puppet通过filebucket实现生产节点文件的恢复介绍

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-4-21 09:25:24 | 显示全部楼层 |阅读模式
场景:在一次通过puppet执行变更后,某一个节点由于特殊性需要恢复到上一次被覆盖的配置文件,puppet是如何做到的。
puppet节点会在每一次更新之前,将当前运行环境的配置文件以MD5值生成路径保存到默认目录/var/lib/puppet/bucket/,里面包含了每个配置文件的内容、文件路径和名称,通过filebucket命令指定文件的MD5值便可以恢复。当然也可以将保存的文件内容复制到当前环境对应的配置文件中进行修复。
PS: 如果要全部恢复到上一个版本,可结合SVN或git进行操作。
下面是具体的实施步骤:
1、在site.pp中添加filebucket资源
[iyunv@puppetserver ssh]# vim /etc/puppet/manifests/site.pp     
import 'nodes/*'
$puppetserver = 'puppetserver.bsgchina.com'   
filebucket { 'main':
  path   => false,  #设置agent节点本地不需要保存
# path   => "/var/lib/puppet/databackup",
  server => 'puppetserver.bsgchina.com'   #设置将文件更改过之前的版本保存到远程服务器puppetserver.bsgchina.com上
}
2、在puppetmaster上修改模块配置文件
[iyunv@puppetserver ssh]# vim /etc/puppet/modules/mysql/manifests/config.pp
class mysql::config{
  file { "/etc/my.cnf":
    ensure  => present,
    owner   => 'mysql',
    group   => 'mysql',
    mode    => 0644,
    source  => "puppet:///modules/mysql/etc/my.cnf",
    backup  => 'main',  #设置backup备份方式为之前site.pp中定义的main方式
#   backup  => ".$backup_date.bak",
    require => Class["mysql::install"],
    notify  => Class["mysql::service"],
  }

  file { "/var/lib/mysql":
    group   => 'mysql',
    owner   => 'mysql',
    recurse => 'true',
    require => File["/etc/my.cnf"],
  }
}
3、修改测试文件模拟新版本发布
vim /etc/puppet/modules/mysql/files/etc/my.cnf
4、节点进行监听
[iyunv@agent1 ssh]# puppet agent --server=puppetserver.bsgchina.com --verbose --no-daemonize
info: Retrieving plugin
info: Loading facts in backup_date
info: Loading facts in backup_date
info: Caching catalog for agent3.bsgchina.com
info: Applying configuration version '1374659257'
info: /Stage[main]/Mysql::Config/File[/etc/my.cnf]: Filebucketed /etc/my.cnf to main with sum fef73d96a75424c782191962f5aaf8ee
notice: /Stage[main]/Mysql::Config/File[/etc/my.cnf]/content: content changed '{md5}fef73d96a75424c782191962f5aaf8ee' to '{md5}09fb95f5505056b5a40c4905af3d636e'
info: /Stage[main]/Mysql::Config/File[/etc/my.cnf]: Scheduling refresh of Service[mysqld]
notice: /Stage[main]/Mysql::Service/Service[mysqld]: Triggered 'refresh' from 1 events
notice: Finished catalog run in 4.34 seconds
结果:可以看到my.cnf被修改之前的版本MD5为fef73d96a75424c782191962f5aaf8ee
5、查看设置的远程服务器端是否正常保存
[iyunv@puppetserver bucket]# ll /var/lib/puppet/bucket/  #默认保存路径
total 12
drwxrwx---. 4 puppet puppet 4096 Jul 24 17:56 0
drwxrwx---. 3 puppet puppet 4096 Jul 24 17:46 e
drwxrwx---. 3 puppet puppet 4096 Jul 24 17:48 f  
[iyunv@puppetserver bucket]# tree f/
f/
└── e
    └── f
        └── 7
            └── 3
                └── d
                    └── 9
                        └── 6
                            └── fef73d96a75424c782191962f5aaf8ee
                                ├── contents
                                └── paths
8 directories, 2 files
结果:保存成功,保存结果为以上目录结构
6、只恢复某一个节点到上一个版本
[iyunv@agent1 modules]# puppet filebucket restore /etc/my.cnf  fef73d96a75424c782191962f5aaf8ee  #节点上操作
7、通过调试模式查看节点动态信息
[iyunv@agent1 ssh]# puppet agent --server=puppetserver.bsgchina.com --verbose --no-daemonize
info: Retrieving plugin
info: Loading facts in /var/lib/puppet/lib/facter/backup_date.rb
info: Caching catalog for agent1.bsgchina.com
info: Applying configuration version '1374659257'
info: /File[/etc/my.cnf]: Filebucketed /etc/my.cnf to main with sum fef73d96a75424c782191962f5aaf8ee
notice: /File[/etc/my.cnf]/content: content changed '{md5}fef73d96a75424c782191962f5aaf8ee' to '{md5}09fb95f5505056b5a40c4905af3d636e'
info: /File[/etc/my.cnf]: Scheduling refresh of Class[Mysql::Service]
info: Class[Mysql::Service]: Scheduling refresh of Service[mysqld]
notice: /Stage[main]/Mysql::Service/Service[mysqld]: Triggered 'refresh' from 1 events
notice: Finished catalog run in 3.65 seconds
结果:可正常恢复到上一个版本(由于我这里设置了5秒钟同步puppetserver端,可以看到以上my.cnf被修改过,而且MD5值与上一版本吻合)
8、恢复所有节点到上一个版本
[iyunv@puppetserver etc]# puppet filebucket restore --local  /etc/puppet/modules/mysql/files/etc/my.cnf  fef73d96a75424c782191962f5aaf8ee
9、通过调试模式查看节点动态信息
[iyunv@agent1 ssh]# puppet agent --server=puppetserver.bsgchina.com --verbose --no-daemonize
notice: Starting Puppet client version 2.7.21
info: Retrieving plugin
info: Loading facts in /var/lib/puppet/lib/facter/backup_date.rb
info: Caching catalog for agent1.bsgchina.com
info: Applying configuration version '1374659257'
info: /File[/etc/my.cnf]: Filebucketed /etc/my.cnf to main with sum 09fb95f5505056b5a40c4905af3d636e
notice: /File[/etc/my.cnf]/content: content changed '{md5}09fb95f5505056b5a40c4905af3d636e' to '{md5}fef73d96a75424c782191962f5aaf8ee'
info: /File[/etc/my.cnf]: Scheduling refresh of Class[Mysql::Service]
info: Class[Mysql::Service]: Scheduling refresh of Service[mysqld]
结果:节点配置文件的MD5值更新为上一个版本的MD5值,恢复成功。


运维网声明 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-17995-1-1.html 上篇帖子: puppet资源file详细介绍(附案例) 下篇帖子: 通过自定义fact增强MCollective推送更新元数据的灵活性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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