在puppet 2.6和2.7中定义和调用函数

在puppet 2.6和2.7中定义和调用函数,puppet,Puppet,我在core/manifests/logrotate.pp中定义了一个模块core和一个类core::logrotate class core::logrotate { #...some stuff here # define confd ($ensure = "present" , $log_name = "dummy" ) { if ( $ensure == present ) { file { "/etc/logrotate.d/$l

我在
core/manifests/logrotate.pp
中定义了一个模块
core
和一个类
core::logrotate

class core::logrotate {
#...some stuff here
#
  define confd ($ensure = "present" , $log_name = "dummy" ) {
    if ( $ensure == present )
    {
        file {
          "/etc/logrotate.d/$log_name":
            ensure => present,
            source => filelookup("core/${log_name}.logrotate"),
        }
    } else {
        file {
          "/etc/logrotate.d/$log_name":
           ensure => absent,
        }
    }
  }  
}
在templates.pp内调用此函数作为

core::logrotate::confd{“mkill”:log_name=>mkill}

此操作失败并出现错误

服务器上的错误400:Puppet::Parser::AST::Resource失败,错误为ArgumentError:无效的资源类型core::logrotate::confd

如果puppet master版本是2.6.x,那么这将失败,为了使其工作,在模块的init.pp中曾经有一个导入“*”。现在将其删除为移动到puppet 2.7.20


这里粘贴的代码在2.7中有效,但在2.6中失败。知道为什么吗?如何使其同时适用于2.6和2.7?

您应该在类外进行定义,请参阅样式指南:

另外,我认为您可能使用了错误的模块,拥有一个“logrotate”模块本身更符合逻辑

所以,;在modulepath/logrotate/manifests/confd.pp中,您可以放置以下内容:

define logrotate::confd ($ensure = "present" , $log_name = "dummy" ) {
  if ( $ensure == present )
  {
    file {
      "/etc/logrotate.d/$log_name":
        ensure => present,
        source => filelookup("core/${log_name}.logrotate"),
    }
  } else {
    file {
      "/etc/logrotate.d/$log_name":
       ensure => absent,
    }
  }
}
这应该能让它正常工作

您好,
Ger

您应该在类外进行定义,请参见样式指南:

另外,我认为您可能使用了错误的模块,拥有一个“logrotate”模块本身更符合逻辑

所以,;在modulepath/logrotate/manifests/confd.pp中,您可以放置以下内容:

define logrotate::confd ($ensure = "present" , $log_name = "dummy" ) {
  if ( $ensure == present )
  {
    file {
      "/etc/logrotate.d/$log_name":
        ensure => present,
        source => filelookup("core/${log_name}.logrotate"),
    }
  } else {
    file {
      "/etc/logrotate.d/$log_name":
       ensure => absent,
    }
  }
}
这应该能让它正常工作

您好, 蒙古包