前几天用fpm打包了一个rpm, 然后puppet部署,又因为需要更新了,重新打包,并且更新了版本号,故而init.pp也更新如下:
-
cat modules/slow_query_converter/manifests/init.pp
-
# Class: slow_query_converter
-
-
class slow_query_converter {
-
-
package { 'slow_query_converter':
-
ensure => latest, #之前是installed
-
}
-
->
-
file { '/opt/slow_query_converter/conf/main.cfg':
-
ensure => present,
-
mode => '0644',
-
group => root,
-
owner => root,
-
source => "puppet:///modules/slow_query_converter/main.cfg",
-
notify => Service["slow_query_converter"];
-
}
-
->
-
service {'slow_query_converter':
-
ensure => running,
-
enable => true;
-
}
-
}
在agent上执行,不生效,找了半天才发现yum cache的问题,直接yum clean all再执行就可以了。
此外还有个问题,service不会重启,怀疑是
/opt/slow_query_converter/conf/main.cfg没更新,直接ls -l 看timestamp果然如此。
原因: rpm build 包的时候会有个选项是否更新配置文件(常见的是保留为.rpmsave),但这里是fpm打包,应该是没指定。所以文件不变,service也不会restart了。
在这里可以看到详细解释,就是rpm spec文件 ~jw35/docs/rpm_config.html
use %config(noreplace) instead of %config in the rpm .spec file, and the file won't be replaced.
针对这个问题,解决办法很简单,在main.cfg加一行注释应该就可以了。
## 后来发现自己想错了,main.cfg是个文件跟rpm build无关。以上仅仅是思路而已。
阅读(1891) | 评论(0) | 转发(0) |