我有2个Release.ini文件:
我想验证下载的(即/CodeRootFolder/tmp/Release.ini)文件是否有变化,如果有变化,则通过puppet exec执行rsync命令,如下所示。
错误是如果有变化,它没有执行,似乎差异返回1。
exec {'Actual code deployment with rsync':
command => "rsync ${myclass::CodeRootFolder}/tmp/* ${myclass::DocRootDir}/)",
#cwd => "${myclass::CodeRootFolder}",
onlyif => "diff --changed-group-format='%<' --unchanged-group-format='' ${myclass::CodeRootFolder}/tmp/Release.ini ${myclass::DocRootDir}/Release.ini",
path => ['/opt/rh/php55/root/usr/bin','/opt/rh/php55/root/usr/sbin','/usr/local/sbin','/usr/local/bin', '/sbin/' ,'/bin/', '/usr/sbin/','/usr/bin/'],
}
我的问题是否有一个很好的解决方案。
提前致谢
答案 0 :(得分:1)
错误是如果有变化,它没有执行,它似乎是 diff返回1.
是的,这是对的。
退出状态为0表示未发现差异,1表示一些差异 发现了差异,2意味着麻烦。
如果您希望在更改时执行命令,则必须使用unless
而不是onlyif
。