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