改变noop运行时的行为 - noop元参数不起作用?

时间:2014-07-07 16:04:25

标签: testing puppet noop

我有以下资源定义

 file { '/usr/lib/oozie/libext/hadoop-lzo-0.5.0.jar':
      ensure  => present,
      group   => 'root', 
      owner   => 'root', 
      source  => '/usr/lib/hadoop/lib/hadoop-lzo-0.5.0.jar',
      mode    => 0755,
      require => [Package['lzo'],Package['lzo-devel'],Package['hadoop-lzo'],Package['hadoop-lzo-native']],
    }

这基本上将jar artefact复制到所需位置。这里的问题是定义,它指向安装其中一个软件包所创建的位置。当在noop模式下运行puppet时,这个资源定义会导致失败,因为没有这样的源 - 这是非常合乎逻辑的。

有没有办法改变这种行为?我不想跳过它的所有依赖项。或者建议的方法是什么?我想避免将jar复制到模块文件。

我找到了noop元参数,文档here,但似乎也没有帮助。所以资源规范如下:

file { '/usr/lib/oozie/libext/hadoop-lzo-0.5.0.jar':
      ensure  => present,
      group   => 'root', 
      owner   => 'root', 
      source  => '/usr/lib/hadoop/lib/hadoop-lzo-0.5.0.jar',
      mode    => 0755,
      noop    => false,
      require => [Package['lzo'],Package['lzo-devel'],Package['hadoop-lzo'],Package['hadoop-lzo-native']],
    }

我需要打开一些东西吗?或者我误解了什么? 如何检测该模块是否以noop模式运行?如果我想要一些讨厌的修复。像noop那样的东西然后跳过

谢谢

1 个答案:

答案 0 :(得分:0)

当客户端以noop模式运行时,$clientnoop事实将成立,否则为false。

我不确定它是否是最佳解决方案,但您可以在$clientnoop为真时包含其他资源。除了源之外,您的'noop资源'可以是具有相同参数的文件资源。这样,仍然可以应用依赖于此文件的其他资源。

相关问题