如何在人偶中包含来自不同目录的模块
How to include modules from a different directory in puppet
我的模块树是这样的
- modules
- socle1
- stdlib
- socle2
- ntp
如何在我的 site.pp
中包含 stdlib 模块?
我试过 include socle1::stdlib
但它不起作用。
目录环境需要修改environment.conf
吗?
在你的init.pp
class classname ( parameters ) {
include ::socle2::ntp
}
试试这个,然后告诉我它是否有效!
您不应该将模块放在其他模块中。你的树应该是这样的:
- modules
- socle1
- stdlib
- socle2
- ntp
另外,你很少会 include stdlib
,因为 stdlib 几乎完全是一个 type/function 模块,所以你只会引用它的类型和函数。除非您计划使用它提供的阶段功能,否则您不会声明它的 类(感谢 John Bollinger 对本段的更正)。
但是,在 site.pp
中声明 ntp
模块非常简单:
include ntp
或:
class { 'ntp': }
在你的 node { }
.
里面
如果您想将模块排列在单独的树中,那么您可以这样做。然后,您应该在环境的模块路径中包含每个基本路径,并通过它们的常规名称引用模块。请特别注意,更改模块的路径不会更改其名称或任何 类 或它定义的类型的名称——路径仅影响自动加载器是否可以找到它们。
但是,我强烈建议不要创建标准模块目录的子目录。相反,如果你想在多个目录中对模块进行分组,那么为此目的创建并行模块目录:
- modules
- socle1
- stdlib
- socle2
- ntp
Should I modify the environment.conf for the directory environment?
为了支持默认之外或代替默认的任何模块目录,是的,您应该这样做。 puppet 文档描述了 how to configure your environment's modulepath。但是请考虑遵循@MattSchuchard 的建议,而不是将自己限制在标准模块目录中。
我的模块树是这样的
- modules
- socle1
- stdlib
- socle2
- ntp
如何在我的 site.pp
中包含 stdlib 模块?
我试过 include socle1::stdlib
但它不起作用。
目录环境需要修改environment.conf
吗?
在你的init.pp
class classname ( parameters ) {
include ::socle2::ntp
}
试试这个,然后告诉我它是否有效!
您不应该将模块放在其他模块中。你的树应该是这样的:
- modules
- socle1
- stdlib
- socle2
- ntp
另外,你很少会 include stdlib
,因为 stdlib 几乎完全是一个 type/function 模块,所以你只会引用它的类型和函数。除非您计划使用它提供的阶段功能,否则您不会声明它的 类(感谢 John Bollinger 对本段的更正)。
但是,在 site.pp
中声明 ntp
模块非常简单:
include ntp
或:
class { 'ntp': }
在你的 node { }
.
如果您想将模块排列在单独的树中,那么您可以这样做。然后,您应该在环境的模块路径中包含每个基本路径,并通过它们的常规名称引用模块。请特别注意,更改模块的路径不会更改其名称或任何 类 或它定义的类型的名称——路径仅影响自动加载器是否可以找到它们。
但是,我强烈建议不要创建标准模块目录的子目录。相反,如果你想在多个目录中对模块进行分组,那么为此目的创建并行模块目录:
- modules
- socle1
- stdlib
- socle2
- ntp
Should I modify the environment.conf for the directory environment?
为了支持默认之外或代替默认的任何模块目录,是的,您应该这样做。 puppet 文档描述了 how to configure your environment's modulepath。但是请考虑遵循@MattSchuchard 的建议,而不是将自己限制在标准模块目录中。