在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”,所以这应该没问题。
如果有人发现此问题或有任何建议,请告诉我。
非常感谢
答案 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
的类的定义的地方。