我的模块树就像这样
- modules
- socle1
- stdlib
- socle2
- ntp
如何在我的site.pp
中包含stdlib模块?
我已经尝试了include socle1::stdlib
但它无效。
我应该修改目录环境的environment.conf
吗?
答案 0 :(得分:3)
您不应该将模块放在其他模块中。你的树应该像:
- modules
- socle1
- stdlib
- socle2
- ntp
另外,你很少include stdlib
,因为stdlib几乎完全是一个类型/功能模块,所以你只能引用它的类型和功能。除非您计划使用它提供的阶段功能,否则您不会声明其类(感谢John Bollinger对此段的更正)。
但是,在ntp
中声明site.pp
模块非常简单:
include ntp
或:
class { 'ntp': }
在node { }
内。
答案 1 :(得分:3)
如果您想将模块安排在不同的树中,那么您可以这样做。然后,您应该在环境的模块路径中包含每个基本路径,并按其常规名称引用模块。请特别注意,更改模块的路径不会更改其名称或其定义的任何类或类型的名称 - 路径仅影响自动装带器是否可以找到它们。
但我强烈反对制作标准模块目录的子目录。相反,如果要将模块分组到多个目录中,则为此目的创建并行模块目录:
- modules
- socle1
- stdlib
- socle2
- ntp
我应该修改目录环境的environment.conf吗?
为了支持任何模块目录超出或代替默认值,是的,你应该。 puppet文档描述了how to configure your environment's modulepath。但请考虑遵循@ MattSchuchard的建议,而是将自己限制在标准模块目录中。
答案 2 :(得分:-1)
在你的init.pp
中 class classname ( parameters ) {
include ::socle2::ntp
}
试试这个并告诉我这是否有效!