puppet的一个Bug
前篇文章写了使用puppet管理500多台服务器,当然只是一部分,最主要的还是puppet脚本的编写,这个我会在以后的文章中一点一点写出来。
今天要写的是puppet的一个bug,版本是puppet 3.1.1
在使用puppet的过程中,发现一处bug,希望大家了解一下,以免出现这种情况。
刚在看一台服务器的crontab的时候,本身crontab配置如下
关键问题出现在红框中,
我做了个操作,先/etc/init.d/puppet stop
然后注释掉 * * * * * /infra/crontab/loadquery.sh >/dev/null 2>&1 这一行。
再/etc/init.d/puppet start
结果配置文件变成了
本来7点半执行的是sync.sh,结果现在变成了loadquery.sh,而注释的那行被移动到上面去了。造成sync.sh的crontab消失了。
也就是说puppet的对于crontab的判断机制有问题,它没有新增一条crontab配置,而是修改了紧跟在#puppet Name后面的别的crontab配置。
我猜想puppet的逻辑是这样的:
首先它会根据#Puppet Name这一条注释行去判断,紧跟着这个注释的有效的crontab语句会被修改成puppet server上定义的crontab内容。
而后我做了个测试,在注释* * * * * /infra/crontab/loadquery.sh >/dev/null 2>&1 这一行 之后,再将#puppet Name:loadquery移动到crontab文件的最下面,发现现在其他的配置都不会被修改,而* * * * * /infra/crontab/loadquery.sh >/dev/null 2>&1这一句出现在了#puppet Name:loadquery下面。这样证实了我的猜想。
puppet这样的处理方式肯定是有问题的,不应该使用注释行来作为判断标准,至少有的SA会认为注释行无影响,可能会做修改,造成意想不到的问题。
所以以后调整crontab的时候不要修改任何puppet自动配置的crontab内容,包括#puppet name这些注释行。
puppet的一个Bug的更多相关文章
- Tomcat一个BUG造成CLOSE_WAIT
之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...
- MySQL关于exists的一个bug
今天碰到一个很奇怪的问题,关于exists的, 第一个语句如下: SELECT ) FROM APPLY t WHERE EXISTS ( SELECT r.APPLY_ID FROM RECORD ...
- 由一个bug引发的SQLite缓存一致性探索
问题 我们在生产环境中使用SQLite时中发现建表报“table xxx already exists”错误,但DB文件中并没有该表.后面才发现这个是SQLite在实现过程中的一个bug,而这个bug ...
- Win10系统菜单打不开问题的解决,难道是Win10的一个Bug ?
Win10左下角菜单打不开,好痛苦,点击右下角的时间也没反应,各种不爽,折磨了我好几天,重装又不忍心,实在费劲,一堆开发环境要安装,上网找了很多方法都不适用.今天偶然解决了,仔细想了下,难道是Win1 ...
- 你可能不知道的 NaN 以及 underscore 1.8.3 _.isNaN 的一个 BUG
这篇文章并不在我的 underscore 源码解读计划中,直到 @pod4g 同学回复了我的 issue(详见 https://github.com/hanzichi/underscore-analy ...
- 标准模板库(STL)的一个 bug
今天敲代码的时候遇到 STL 的一个 bug,与 C++ 的类中的 const 成员变量有关.什么,明明提供了默认的构造函数和复制构造函数,竟然还要类提供赋值运算符重载.怎么会这样? 测试代码 Tes ...
- 是uibutton跟tableviewcell同步使用一个bug
这个问题是uibutton跟tableviewcell同步使用一个bug,不关delay一点毛事,证据就是点击事件没问题,so,搜到一个方法解决了这个问题.uibutton分类symbian2+ios ...
- 在chrome下-webkit-box布局的一个bug
chrome,也就是webkit内核下作的检测, chrome版本是40, -webkit-box这种布局在移动端用的比较多,主要是因为pc端的浏览器内核参差不齐. 因为在写HTML的时候看上了-we ...
- 关于MySQL count(distinct) 逻辑的一个bug【转】
本文来自:http://dinglin.iteye.com/blog/1976026#comments 背景 客户报告了一个count(distinct)语句返回结果错误,实际结果存在值,但是用cou ...
随机推荐
- Selenium-多窗口处理
弹出新的窗口,该如何处理 1.获取当前窗口句柄 2.元素的操作,打开新的窗口 3.获取所有窗口句柄 4.for循环遍历所有窗口,定位到需要操作的窗口上 和你当前句柄不一样的就说明是新的,通过打印tit ...
- Navicate一个有用的注册码
NAVH-WK6A-DMVK-DKW3 百度直接得到,
- 机器学习 Logistic Regression
Logistic Regression 之前我们讨论过回归问题,并且讨论了线性回归模型.现在我们来看看分类问题,分类问题与回归问题类似,只不过输出变量一个是离散的,一个是连续的.我们先关注二分类问题, ...
- NOI 模拟赛 #2
得分非常惨惨,半个小时写的纯暴力 70 分竟然拿了 rank 1... 如果 OYJason 和 wxjor 在可能会被爆踩吧 嘤 T1 欧拉子图 给一个无向图,如果一个边集的导出子图是一个欧拉回路, ...
- JQuery基本知识、选择器、事件、DOM操作、动画--2017年2月10日
$(对象)可以将JS对象转换为JQuery对象 .get(0)可以将JQuery对象转换为JS对象 并无太大区别,灵活点出即可
- netsh wlan start hostednetwork
常用的无线网命令: 一.开启系统承载网络模块和新建无线网络命令: netsh wlan set hostednetwork mode=allow ssid=wifi key=12345678说明:ss ...
- bzoj 2044 三维导弹拦截——DAG最小路径覆盖(二分图)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2044 还以为是CDQ.发现自己不会三维以上的…… 第一问可以n^2.然后是求最长不下降子序列 ...
- Python:urllib模块的urlretrieve方法
转于:https://blog.csdn.net/fengzhizi76506/article/details/59229846 博主:fengzhizi76506 1)功能: urllib模块提供的 ...
- ETL之Tungsten Replicator
1 概述 1.1 介绍 Tungsten Replicator是数据库集群和复制供应商Continuent推出的高性能.开源的数据复制引擎,是Continuent最先进的集群解决方案的核心组件之一,特 ...
- js中的函数易忽略的点小节
1.Function()属性和方法 属性: prototype 2.Function对象实例属性和方法 实例属性:(例如var Function=function(x,y,z){}; myFuncti ...