我试图设置Puppet来使用模板来为我们的服务器创建配置文件。我这样做的当前方式是使用继承将默认值传递给类。这允许我正确地将数据与其余代码分开。这种结构的一个例子如下:
class grading_properties(
$home='tomcat-deploy',
$financialScoreHigh = $grading_properties_defaults::financialScoreHigh,
$financialScoreLow = $grading_properties_defaults::financialScoreLow,
$qualityScoreHigh = $grading_properties_defaults::qualityScoreHigh,
$qualityScoreLow = $grading_properties_defaults::qualityScoreLow,
)inherits grading_properties_defaults {
file{"${base}/${home}/company-conf/grading.properties" :
ensure => present,
mode => '0755',
owner => 'root',
group => 'root',
content => template("company/company-conf_pr/grading.properties.erb")
}
}
该课程负责生成" grading.properties"配置文件基于" grading.properties.erb"模板。 " grading_properties_defaults"它继承的类看起来像这样:
class grading_properties_defaults{
$financialScoreHigh = 4
$financialScoreLow = 7
$qualityScoreHigh = 6000
$qualityScoreLow = 4000
}
我遇到的问题是当我尝试使用
创建课程时class{ "grading_properties" :
financialScoreHigh => 10,
}
来自同一模块中的一个类,我从puppet apply中得到以下错误:
Error: Could not find parent resource type 'grading_properties_defaults' of type hostclass in production at /home/git/puppet/modules/company/manifests/grading_properties.pp:1 on node sv1.company.qa0
在同一模块中引用类的正确方法是什么?
答案 0 :(得分:1)
事实证明,我只需要完全限定我的班级名称,以便木偶找到它们。例如。 class grading_properties_defaults
应为modulename::grading_properties_defaults
答案 1 :(得分:0)
如果你不在同一个puppetfile中,我们必须编写modulename :: classname作为例子:
class modulename::role {
### CODE HERE ####
}
class role::www inherits modulename::role {
### CODE HERE ####
}
在同一个puppetfile中,您不需要声明modulename
class role {
### CODE HERE ####
}
class role::www inherits role {
### CODE HERE ####
}
有关个人资料和角色的精彩资料that's by design