来自其他文件的其他类的木偶依赖

Sha*_*ame 2 puppet

我正在使用puppet在云基础架构上自动配置服务器.我将我的清单分成几个.pp's.

我有以下错误:

找不到依赖项Mehc_module :: Filestructure :: File [/ someFolder/someSubFolder]

相关部分:

filestructure.pp

class mehc_module::filestructure{
file {
        "/someFolder/someSubFolder":
           ensure  => link,
           owner   => $mehc_module::users::WEBLOGIC_UID,
           group   => $mehc_module::users::WEBLOGIC_GID,
           target  => "/opt/user_projects",
           require => UserDefinedFolder["/someFolder"];
    }
Run Code Online (Sandbox Code Playgroud)

packages.pp

class mehc_module::packages{
    require mehc_module::filestructure

    ...
    mehc_repo::package { "${common11rpm}" :
    ensure => present,
    require => [
        Mehc_module::Filestructure::File["/someFolder/someSubFolder"]
    ];
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么它会给我错误?

Fel*_*ank 8

您的资源引用结构不正确.你只是想

require => File["/someFolder/someSubFolder"]
Run Code Online (Sandbox Code Playgroud)

资源引用不考虑清单上下文.即使他们愿意,资源的"完整路径"也是如此Class[mehc_module::filestructure]/File["/someFolder/someSubFolder"].但这也行不通.

普通File["/someFolder/someSubFolder"]引用就足够了,因为每个资源只能在整个清单中定义一次(包括所有模块).

请注意,这通常是一种更好的做法

require => Class["mehc_module::filestructure"]
Run Code Online (Sandbox Code Playgroud)

因为这将暗示上述关系("依赖于在类中声明的所有资源")而不会将mehc_module::packages实现细节与实现细节相关联mehc_module::filestructure.

此规则的一个值得注意的例外是,您依赖的类声明了大量资源,从而导致图形复杂性(具有性能影响),以及依赖循环的危险性增加.该锚纹有助于这些情况.