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

如何在puppet中包含来自不同目录的模块,puppet,Puppet,我的模块树是这样的 - modules - socle1 - stdlib - socle2 - ntp 如何在我的站点.pp中包含stdlib模块 我尝试了包含socle1::stdlib,但它不起作用 我是否应该修改init.pp中目录环境的environment.conf 类类名(参数){ include::socle2::ntp } 试试这个,告诉我这是否有效 在init.pp中 类类名(参数){ include::socle2::

我的模块树是这样的

   - modules
     - socle1
       - stdlib
     - socle2
       - ntp
如何在我的
站点.pp
中包含stdlib模块

我尝试了
包含socle1::stdlib
,但它不起作用

我是否应该修改init.pp中目录环境的
environment.conf

类类名(参数){
include::socle2::ntp
}

试试这个,告诉我这是否有效

在init.pp中

类类名(参数){
include::socle2::ntp
}


试试这个,告诉我这是否有效

您不应该将模块放在其他模块中。你的树应该是这样的:

- modules
  - socle1
  - stdlib
  - socle2
  - ntp
另外,您很少
包含stdlib
,因为stdlib几乎完全是一个类型/函数模块,所以您只会引用它的类型和函数。除非您计划使用它提供的stages功能(感谢John Bollinger对本段的更正),否则您不会声明它的类

但是,在
site.pp
中声明
ntp
模块非常简单:

include ntp
或:


节点{}

内,不应将模块放在其他模块内。你的树应该是这样的:

- modules
  - socle1
  - stdlib
  - socle2
  - ntp
另外,您很少
包含stdlib
,因为stdlib几乎完全是一个类型/函数模块,所以您只会引用它的类型和函数。除非您计划使用它提供的stages功能(感谢John Bollinger对本段的更正),否则您不会声明它的类

但是,在
site.pp
中声明
ntp
模块非常简单:

include ntp
或:


节点{}

内部,如果您想在单独的树中排列模块,则可以这样做。然后,您应该在环境的modulepath中包含每个基本路径,并通过其常规名称引用模块。请特别注意,更改模块的路径不会更改其名称或其定义的任何类或类型的名称——路径只影响自动加载程序是否能够找到它们

但是,我强烈建议不要创建标准模块目录的子目录。相反,如果要在多个目录中对模块进行分组,请为此目的创建并行模块目录:

- modules
- socle1
  - stdlib
- socle2
  - ntp
我应该为目录环境修改environment.conf吗


为了支持默认目录以外的任何模块目录或代替默认目录,是的,您应该。puppet文档描述了。但是,请考虑遵循MattSchuchard的建议,而将自己限制在标准模块目录中。

< P>如果您想将模块排列在单独的树中,那么您可以这样做。然后,您应该在环境的modulepath中包含每个基本路径,并通过其常规名称引用模块。请特别注意,更改模块的路径不会更改其名称或其定义的任何类或类型的名称——路径只影响自动加载程序是否能够找到它们

但是,我强烈建议不要创建标准模块目录的子目录。相反,如果要在多个目录中对模块进行分组,请为此目的创建并行模块目录:

- modules
- socle1
  - stdlib
- socle2
  - ntp
我应该为目录环境修改environment.conf吗


为了支持默认目录以外的任何模块目录或代替默认目录,是的,您应该。puppet文档描述了。但是请考虑遵循MattSchuchard的建议,而不是把自己限制在标准的模块目录中。

我总是错误地找不到类::SoCLE::NTP-而不是在你的站点中包含STDLIB。PP,为什么不把它包含在你创建的模块中?您可以在init.pp中包含!我总是错误地找不到class::socle::ntpin除了在站点中包含stdlib.pp之外,为什么不将它包含在您创建的模块中?您可以在init.pp中包含!感谢您的回复,但socle1不是一个模块,它只是一个包含模块的目录。我正在使用r10k,它将帮助我组织很多模块,像这样r10k不会组织子目录内的模块。此外,没有理由使用子目录,这会让Puppet感到困惑。
stdlib
(至少是当前版本)不是一个纯粹的函数/类型模块。它有一个同名类,因此您可以
包括stdlib
。该类本身包括
::stdlib::stages
,它声明了一组标准(-ish)运行阶段,因此包含stdlib并非没有效果。尽管如此,OP是否真的想这么做仍然值得怀疑。@JohnBollinger StackOverflow似乎从昨天起就失去了我们在这里的评论,但基本上我不记得是否必须包含/声明stdlib才能使用stages,也不必费心检查,因此感谢您澄清这些信息。感谢您的回复,但是socle1不是一个模块,它只是一个包含模块的目录。我正在使用r10k,它将帮助我组织很多模块,像这样r10k不会组织子目录内的模块。此外,没有理由使用子目录,这会让Puppet感到困惑。
stdlib
(至少是当前版本)不是一个纯粹的函数/类型模块。它有一个同名类,因此您可以
包括stdlib
。该类本身包括
::stdlib::stages
,它声明了一组标准(-ish)运行阶段,因此包含stdlib并非没有效果。尽管如此,OP是否真的想这么做仍然值得怀疑。@JohnBollinger StackOverflow似乎从昨天起就失去了我们在这里的评论,但基本上我不记得是否必须包含/声明stdlib才能使用stages,也不必费心检查,因此感谢您澄清这些信息。