如何在puppet中包含来自不同目录的模块

时间:2016-08-29 09:07:47

标签: puppet

我的模块树就像这样

   - modules
     - socle1
       - stdlib
     - socle2
       - ntp

如何在我的site.pp中包含stdlib模块?

我已经尝试了include socle1::stdlib但它无效。

我应该修改目录环境的environment.conf吗?

3 个答案:

答案 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 }

试试这个并告诉我这是否有效!