我发现有些Puppet模块没有init.pp
。为什么会这样?init.pp
在Puppet模块中的功能是什么?
Puppet可以在没有init.pp
清单的情况下定位模块吗?
我发现有些Puppet模块没有init.pp。为什么?什么init.pp在Puppet中的作用?
模块的manifests/
目录中的清单文件布局用于允许自动加载器将模块的类和定义的类型名称映射到清单文件。相对于模块路径中的某个目录,包含my_module::foo
形式的类或已定义类型的定义的清单应为my_module/manifests/foo.pp
。
许多(但不是所有)模块都有一个与模块同名的类。例如,模块my_module
可以具有名为my_module
的类。这样的类不能进入my_module/manifests/my_module.pp
,因为那是my_module::my_module
的位置。相反,如果一个模块有一个同名类,那么它的定义将进入清单目录中的init.pp
。(不允许使用my_module::init
形式的类名来腾出空间。)另一方面,如果模块没有提供同名类或定义的类型,则init.pp
将不包含任何有用的内容;则可以省略它。
Puppet文档详细讨论了自动加载和清单布局。
Puppet可以在没有init.pp的情况下定位模块吗?
当然。Puppet不依赖init.pp文件的存在来识别模块。模块由模块路径中目录的子目录定义。