定义类型的参数无效

定义类型的参数无效

我有一个定义的类型,如下modules/sysctl/manifests/init.pp所示:

定义 sysctl($value = undef,$ensure = undef){

  # 清除父目录
  包括 sysctl::base

  # 永久的改变
  文件 {“/etc/sysctl.d/${title}.conf”:
    所有者 => 'root',
    组 => '根',
    模式 => '0644',
    内容 => “${title} = ${value}\n”,
    确保 => $确保,
    通知 => 执行["sysctl-${title}"],
  }

  # 立即发生的变化
  执行 { “sysctl-${title}”:
    命令 => “/sbin/sysctl -w ${title}=${value}”
    refreshonly => true,
  }
}

modules/template/manifests/api.pp在由节点继承的模板模块中我使用:

类模板::api {

  包括 yumrepos::epel
  包括模板::common
  包括我的防火墙

  防火墙
  防火墙

  类 {'::mymodule':
    需要 => 类['yumrepos::epel'],
  }

  类 {'::resolv':
    local_resolver => true,
  }

  sysctl {'net.netfilter.nf_conntrack_max':
    值 => '1048576',
    确保 => '文件',
  }
  sysctl {'net.nf_conntrack_max':值 => 1048576}
  系统控制 {
    ‘net.netfilter.nf_conntrack_tcp_timeout_established’:
      值 => 86400
  }
  sysctl {'net.ipv4.tcp_tw_recycle':值=>'0'}
  sysctl {'net.ipv4.tcp_tw_reuse':值=>'1'}
  sysctl {'net.ipv4.tcp_fin_timeout':值=>'10'}
  sysctl {'net.ipv4.ip_local_port_range':值=>'10000 65535'}
  sysctl {'kernel.msgmni':值=>'1024'}
  sysctl {'kernel.sem':值 =>'250 256000 32 1024'}

}

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter value at /etc/puppet/modules/template/manifests/api.pp:28 on node dis1.mydomain.com但我在节点上收到错误。第 28 行包含}sysctl 定义的结尾。

我还尝试过将类型称为 sysctl::sysctl,并将定义的类型包装在一个类中,将名称更改为 set,然后将其称为 sysctl::set。它们仍然不起作用。如果我尝试这样做,include sysctl我会收到一个错误,提示该类不存在。

我在这里做错了什么?

答案1

sysctl看来你没有在任何地方定义实际的类别。

在您的中modules/sysctl/manifests/init.pp您应该至少有一个class sysctl集合,然后包含您定义的类型(其名称应该与类本身不同),如下所示:

class sysctl {
  # this is empty
}

define sysctl::set ( $value = undef, $ensure = undef ) {
  ...
}

这就是为什么在尝试时会出错include sysctl,因为没有这样的类。修复modules/sysctl/manifests/init.pp然后在顶部/etc/puppet/modules/template/manifests/api.pp添加。然后它应该可以工作。include sysctl

相关内容