我发现有一些没有init.pp
的Puppet模块。为什么是这样? Puppet模块中init.pp
的功能是什么?
Puppet可以找到没有init.pp
清单的模块吗?
答案 0 :(得分:2)
我发现有一些没有init.pp的Puppet模块。为什么?什么的 puppet中init.pp的功能?
模块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文档详细讨论了autoloading and manifest layout。
Puppet可以找到没有init.pp的模块吗?
当然可以。 Puppet不依赖于init.pp文件的存在来识别模块。模块由模块路径中的目录子目录定义。