Puppet找不到父资源类型

时间:2014-08-18 15:34:53

标签: puppet

我试图设置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

在同一模块中引用类的正确方法是什么?

2 个答案:

答案 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