【发布时间】:2016-10-25 02:28:25
【问题描述】:
我正在编写一些 puppet 模块,并在两个模块中定义了一个包,因此出现以下错误:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate definition: Package[gnome-session-fallback] is already defined in file /etc/puppet/modules/vnc4server/manifests/init.pp at line 3; cannot redefine at /etc/puppet/modules/vino/manifests/init.pp:7 on node l
因此希望确保该包尚未定义但以下内容不起作用:
if ! defined ('gnome-session-fallback') {
package { 'gnome-session-fallback':
ensure => installed,
}
}
谁能建议如何解决这个问题,以及在更广泛的范围内,避免模块中此类冲突的“正确”方法是什么?
【问题讨论】:
-
请准确发布这不起作用的原因。您是否收到错误消息,或者它只是简单地没有做它应该做的事情?另请注明您使用的是哪个版本的 Puppet!
-
上面第二行发布的错误消息 - 我正在测试它是否已经在另一个模块中定义并且测试似乎没有检测到这一点,因此尝试重新定义它并且代理运行失败(请参阅 err )。版本 2.7.11
-
也许我今天有点无聊:所以你得到了
if ! defined...脚本的错误,对吧? -
该错误是在原始帖子“服务器上的错误 400:重复定义:包”等中发布的,因为 if !定义的测试不起作用。
-
见my comment below,@MrMorphe。
标签: puppet