Puppet 使用配置文件/角色DP时出现双重声明错误

Puppet 使用配置文件/角色DP时出现双重声明错误,puppet,Puppet,我对puppet还不熟悉,在尝试做一些琐碎的事情时,我犯了一些错误 我一直收到双重声明错误,但我不知道为什么。 我想我遗漏了一些东西,欢迎大家发表意见 木偶版:3.7.5 (我正在尝试使用配置文件/角色设计模式) 这是我的档案: tomcat.pp(它位于…puppet/manifests/profile/manifests/tomcat.pp) applicationserver.pp(它位于…puppet/manifests/role/manifests/applicationserver.

我对puppet还不熟悉,在尝试做一些琐碎的事情时,我犯了一些错误

我一直收到双重声明错误,但我不知道为什么。 我想我遗漏了一些东西,欢迎大家发表意见

木偶版:3.7.5 (我正在尝试使用配置文件/角色设计模式)

这是我的档案:

tomcat.pp
(它位于…
puppet/manifests/profile/manifests/tomcat.pp

applicationserver.pp
(它位于…
puppet/manifests/role/manifests/applicationserver.pp

main.pp
(我用这个文件运行puppet应用程序)

最后是我的
hiera
文件:

profile::tomcat::java_version: '1.7.0_75-fcs'
profile::tomcat::java_package: 'jdk'
profile::tomcat::version: '7.0.57'
profile::tomcat::instance: 'ulg'
profile::tomcat::home: '/appli/tomcat'
profile::tomcat::user: 'tomcat-ulg'
profile::tomcat::group: 'tomcat-ulg'
profile::tomcat::java_opts: 'options'
profile::tomcat::java_home: '/usr/java/default'
我得到的错误是:

Error: Duplicate declaration: Class[Profile::Tomcat] is already declared; cannot redeclare at /etc/puppet/modules/profile/manifests/tomcat.pp:39 on node tomcatvm.home
Error: Duplicate declaration: Class[Profile::Tomcat] is already declared; cannot redeclare at /etc/puppet/modules/profile/manifests/tomcat.pp:39 on node tomcatvm.home
我犯了两次同样的错误,这不是很奇怪吗? 不管怎样,欢迎所有关于我工作的答案或意见


很抱歉我的英语不好,谢谢

看到您通过重命名profile类解决了这个问题,您很可能遇到了范围冲突,即

class profile::tomcat {
    include tomcat
}
应该包括
tomcat
模块。但是当在
profile
模块的范围内使用时,它将把
tomcat
解析为
profile::tomcat

正确的解决方案是避免这种隐式范围界定

class profile::tomcat {
    include ::tomcat
}

使用
::tomcat
可以让Puppet清楚地知道,您指的是
tomcat
模块,而不是同名的本地类。

文件tomcat.pp:39的第39行中有什么?因为您似乎已经在那里声明了
class[Profile::Tomcat]
,然后又在其他地方声明了它。谢谢您的回答。我有:类{'tomcat':catalina_home=>$catalina_base,user=>$user,group=>$group,}。我通过将“profile::tomcat”重命名为“profile::tomcatpackage”解决了我的问题。你知道为什么它能解决它吗?我明白了。由于我重新命名了它,它是第一个看起来像profile::tomcat的,但由于它不存在(再也不存在),它解析了tomcat(::tomcat)。是这样吗?
Error: Duplicate declaration: Class[Profile::Tomcat] is already declared; cannot redeclare at /etc/puppet/modules/profile/manifests/tomcat.pp:39 on node tomcatvm.home
Error: Duplicate declaration: Class[Profile::Tomcat] is already declared; cannot redeclare at /etc/puppet/modules/profile/manifests/tomcat.pp:39 on node tomcatvm.home
class profile::tomcat {
    include tomcat
}
class profile::tomcat {
    include ::tomcat
}