我正在为我的服务器的不同角色编写特定的模块。所以我有一个木偶和一个木偶仪表板-模块。该木偶模块确保木偶是正确的安装。当然,傀儡仪表板对傀儡仪表板也做同样的事情。
两个模块都需要 puppetlabs apt 源(顺便说一句。我正在使用https://github.com/puppetlabs/puppet-apt)。所以我在puppet和puppet-dashboard -module 中有以下定义的资源:
apt::source { "puppetlabs":
location => "http://apt.puppetlabs.com",
release => "squeeze",
repos => "main",
required_packages => true,
include_src => false,
key => "4BD6EC30",
key_server => "pgp.mit.edu",
}
Run Code Online (Sandbox Code Playgroud)
现在我的代理出现以下错误:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Apt::Source[puppetlabs] is already declared in file /etc/puppet/modules/puppet/manifests/base.pp at line 27; cannot redeclare at /etc/puppet/modules/puppet-dashboard/manifests/init.pp:42 on node server123
Run Code Online (Sandbox Code Playgroud)
特定模块彼此独立。因此我认为在每个模块中单独设置这个apt源的依赖是正确的。
一种解决方法是将一个源从puppetlabs
topuppetlabs2
或 sth重命名。像那样。但必须有另一种解决方案。
我很好奇你的回答!
每当我遇到这个问题(特别是对于包而言)时,我只是将资源单独放入一个类中:
class git {
package { 'git': ensure => installed, }
}
Run Code Online (Sandbox Code Playgroud)
然后我包含该类而不是定义资源。
下一个问题:但是它们被不同的模块使用!是的,要么将它们放入common
,要么放入其他特定于模块的通用模块(例如,puppet-common
)。
归档时间: |
|
查看次数: |
3413 次 |
最近记录: |