我有以下资源定义
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那样的东西然后跳过
谢谢
答案 0 :(得分:0)
当客户端以noop模式运行时,$clientnoop
事实将成立,否则为false。
我不确定它是否是最佳解决方案,但您可以在$clientnoop
为真时包含其他资源。除了源之外,您的'noop资源'可以是具有相同参数的文件资源。这样,仍然可以应用依赖于此文件的其他资源。