我有一个使用gini-archive的木偶模块。最近我将模块更改为依赖于biemond-wildfly,这取决于nanliu-archive。
但是,我无法安装nanliu-archive,因为这两个存档模块都安装在名为archive
的目录中。我认为这违反了puppet模块的要求,因为它们都应安装在名为<username>-archive
的目录中。
但是,即使我把它们放在不同的目录中,我仍然有问题。这两个类都被称为archive
(实际上一个是一个类,一个是定义,但我现在认为它太重要了),所以当我的模块说include archive
时,木偶不会知道我想要哪一个。
注意我有一个java背景,其中每个类都在一个包层次结构中,可以防止出现这类问题,但是我看不到任何木偶的等价物。
我知道我可以拥有一大堆不同的模块目录(/etc/puppet/modules
,/etc/puppet/modules2
等),但是木偶似乎仍然按顺序查看它们,这意味着它总是会加载{{1来自列表中第一个模块目录的类。
有没有办法解决这个问题,或者我达到了傀儡可以做的极限?我宁愿不必分叉每一个模块并更改类名,这似乎打败了伪造点。
感谢。
答案 0 :(得分:2)
模块所在目录的名称必须为archive
,用户名仅用于分发和打包模块,但在自动加载时不会被木偶使用。基本上,你所看到的是正确的。
似乎有两种处理方法:
答案 1 :(得分:0)
我刚刚这样做了所以我将在@ ChrisPitman的答案中扩展一下选项(1),通过使用我刚刚分叉的模块包含更多细节。重命名为一个例子。
(不幸的是)最简单的解决方案是分叉其中一个模块并重命名。以下是使用puppet/selinux
和thias/selinux
在selinux
处发生命名空间冲突的示例。执行以下步骤将thias/selinux
模块重命名为命名空间selinux_thias
:
modules/$NEW_NAME
。使用git子模块,这是:git submodule add https://github.com/USF-IMARS/puppet-selinux modules/selinux_thias
selinux_thias
而不是selinux
。