如何处理具有相同名称的类的puppet模块?

如何处理具有相同名称的类的puppet模块?,puppet,Puppet,我有一个木偶模块,它使用。最近我将我的模块更改为dependent,这取决于 但是,我无法安装nanliu archive,因为这两个归档模块都安装到名为archive的目录中。我认为,这违反了puppet模块的要求,因为它们都应该安装到名为-archive的目录中 然而,即使我把它们放在不同的目录中,我仍然有一个问题。这两个类都称为archive(实际上一个是类,一个是define,但我认为现在这并不太重要),所以当我的模块说包含归档时,puppet不知道我想要哪一个 请注意,我有一个java

我有一个木偶模块,它使用。最近我将我的模块更改为dependent,这取决于

但是,我无法安装nanliu archive,因为这两个归档模块都安装到名为
archive
的目录中。我认为,这违反了puppet模块的要求,因为它们都应该安装到名为
-archive
的目录中

然而,即使我把它们放在不同的目录中,我仍然有一个问题。这两个类都称为
archive
(实际上一个是类,一个是define,但我认为现在这并不太重要),所以当我的模块说
包含归档时,puppet不知道我想要哪一个

请注意,我有一个java背景,其中每个类都在一个包层次结构中,这可以防止此类问题,但我看不到puppet有任何等价物

我知道我可以有一大堆不同的模块目录(
/etc/puppet/modules
/etc/puppet/modules2
等),但puppet似乎仍然按顺序查看这些目录,这意味着它将始终从列表中的第一个模块目录加载
归档

有没有办法解决这个问题,或者我已经达到了木偶的极限了?我宁愿不必分叉每个模块并更改类名,这似乎违背了forge的观点


谢谢。

模块所在目录的名称必须是
存档
,用户名仅用于分发和打包模块,但puppet在自动加载时不使用。基本上,你所看到的是正确的

似乎有两种处理方法:

  • 分叉两个归档模块中的一个,并重命名该模块,使其不会发生冲突
  • 使用归档模块为其中一个模块分叉,并将其迁移到与另一个模块使用相同的归档模块。因为这两个归档模块做的事情几乎相同,所以我更喜欢这种方法

  • 我只是这样做了,所以我将在@ChrisPitman的答案中对选项(1)进行一些扩展,以我刚刚分叉并重命名的模块为例,包含更多细节

    (不幸的是)最简单的解决方案是分叉其中一个模块并将其重命名。下面是一个使用
    puppet/selinux
    thias/selinux
    的示例,它们在
    selinux
    处有名称空间冲突。采取以下步骤将
    thias/selinux
    模块重新命名为命名空间
    selinux\u thias

  • 用叉子叉模块。在这个例子中,我创建了
  • 将模块安装到
    模块/$NEW\u NAME
    中。使用git子模块这是:
    git子模块添加https://github.com/USF-IMARS/puppet-selinux 模块/selinux_thias
  • 重命名模块类。是一个提交,它演示了这基本上是什么样子
  • 使用thias/selinux修改模块,以使用新名称
    selinux\u thias
    而不是
    selinux

    我觉得这个答案是正确的,但如果不能接受它是真的,那就太痛苦了。