UNIX diff命令用于puppet exec

时间:2016-08-10 22:27:40

标签: linux bash exec diff puppet

我有2个Release.ini文件:

  • 我正在从存储在/ CodeRootFolder / tmp位置
  • 中的S3下载
  • 和/ DocRootDir位置中的其他位置

我想验证下载的(即/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/'], 
}

我的问题是否有一个很好的解决方案。

提前致谢

1 个答案:

答案 0 :(得分:1)

  

错误是如果有变化,它没有执行,它似乎是   diff返回1.

是的,这是对的。

  

Invoking diff

     

退出状态为0表示未发现差异,1表示一些差异   发现了差异,2意味着麻烦。

如果您希望在更改时执行命令,则必须使用unless而不是onlyif

相关问题