具有一个共同资源的不同木偶模块

Modified on: Tue, 25 Jun 2019 22:00:03 +0800

我正在为我的服务器的不同角色编写特定的模块。所以我有一个puppet和一个puppet-dashboard -Module。 puppet模块可确保正确安装puppet。当然,木偶仪表板对木偶仪表板也是如此。

两个模块都需要puppetlabs apt来源(顺便说一下。我正在使用https://github.com/ puppetlabs /木偶易于)。所以我在puppetpuppet-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",
    }

现在我的座席上出现以下错误:

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

特定模块彼此独立。因此,我认为在每个模块中单独设置此apt源的依赖是正确的。

解决方法是将一个来源从puppetlabs重命名为puppetlabs2或者......像那样。但必须有另一种解决方案。

我很好奇你的回答!

作者:MMore

最佳答案

每当我遇到这个问题时(包特别常见),我只需将资源放在一个类中,它本身就是:

class git {
    package { 'git': ensure => installed, }
}

然后我包括该类而不是定义资源。

下一个问题:但它们被不同的模块使用!是的,要么将它们放在common中,要么放在其他一些模块特定的通用模块中(比如puppet-common)。


相关问答

添加新评论