Puppet角色和个人资料 - 无法找到课程

时间:2016-01-05 13:23:49

标签: ruby class puppet roles profiles

在site.pp文件中包含角色时,我收到错误“找不到类角色:: developmentmachine”

在我的site.pp中我有:

node 'laraveldev2-VirtualBox.local' {
    include roles::developmentmachine
}

在我的模块文件夹(/ etc / puppetlabs / code / environments / production / modules)中,我有一个角色文件夹。

模块文件夹的部分树:

 └── roles
     ├── developmentmachine
     │   └── init.pp
     └── init.pp

developmentmachine / init.pp有:

class roles::developmentmachine {
    # Code here
}

我检查了模块路径并且它是正确的(如上所述)。

据我所知,写作包括角色:: developmentmachine说“在roles文件夹中包含一个类,在modules文件夹中,名为developmentmachine”,所以这应该没问题。

如果有人发现此问题或有任何建议,请告诉我。

非常感谢

1 个答案:

答案 0 :(得分:1)

顶级init.pp文件仅适用于将其模块名称作为其完全限定名称的类。在“角色”模块中,这将是一个名为“roles”的类(绝对:::roles)。

其他类定义应该放在以该类命名的清单文件中。例如,名为roles::developmentmachine的类的定义应出现在文件modules/roles/manifests/developmentmachine.pp.中.Puppet找不到您的类,因为您已将其放在其他位置。

如果在完全限定类或定义类型名称中有两个以上的段,那么这对应于相应清单目录的子结构。但是,它不会改变任何进程,并且在任何情况下init.pp文件的特殊含义都不适用于模块清单目录的子目录。因此,文件modules/roles/manifests/developmentmachine/init.pp是Puppet寻找名为roles::developmentmachine::init的类的定义的地方。