我有一个定义的类型modules/sysctl/manifests/init.pp
,看起来像:
定义 sysctl($value = undef,$ensure = undef){ # 父清除目录 包括 sysctl::base # 永久改变 文件 { "/etc/sysctl.d/${title}.conf": 所有者 => '根', 组 => '根', 模式 => '0644', 内容 => "${title} = ${value}\n", 确保 => $确保, notify => Exec["sysctl-${title}"], } # 立即改变 exec { "sysctl-${title}": 命令 => "/sbin/sysctl -w ${title}=${value}", refreshonly => 真, } }
modules/template/manifests/api.pp
在由我使用的节点继承的模板模块中:
类模板:: API { 包括 yumrepos::epel 包括模板::常见 包括我的防火墙 防火墙 防火墙 类 { '::我的模块' : require => Class['yumrepos::epel'], } 类 { '::resolv' : local_resolver => 真, } sysctl { 'net.netfilter.nf_conntrack_max': 值 => '1048576', 确保 => '文件', } sysctl { 'net.nf_conntrack_max' : value => 1048576 } 系统控制{ 'net.netfilter.nf_conntrack_tcp_timeout_established': 值 => 86400 } sysctl { 'net.ipv4.tcp_tw_recycle' : value => '0' } sysctl { 'net.ipv4.tcp_tw_reuse' : value => '1' } sysctl { 'net.ipv4.tcp_fin_timeout' : value => '10' } sysctl { 'net.ipv4.ip_local_port_range' : value => '10000 65535' } sysctl { 'kernel.msgmni' : value => '1024' } sysctl { 'kernel.sem' : value => '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
我得到一个类不存在的错误。
我在这里做错了什么?
sysctl
看来,您无处定义实际的班级。你
modules/sysctl/manifests/init.pp
应该至少有一个class sysctl
集合,然后包括你定义的类型(它应该与类本身不同地命名),如下所示:这就是为什么你在尝试时会出错
include sysctl
,因为没有这样的类。修复modules/sysctl/manifests/init.pp
然后在顶部/etc/puppet/modules/template/manifests/api.pp
添加。include sysctl
然后它应该工作。