我有一个在modules/sysctl/manifests/init.pp中定义的types,如下所示:
define sysctl($ value = undef,$ ensure = undef){
#父清除的目录
包括sysctl :: base
永久的变化
file {“/etc/sysctl.d/${title}.conf”:
owner =>'root',
group =>'root',
mode =>'0644',
content =>“$ {title} = $ {value} \ n”,
确保=> $确保,
notify => Exec [“sysctl - $ {title}”],
}
#即时变化
exec {“sysctl - $ {title}”:
command =>“/ sbin / sysctl -w $ {title} = $ {value}”,
refreshonly => true,
}
}
在由我使用的节点inheritance的模板模块modules/template/manifests/api.pp中:
class template :: api {
包括yumrepos :: epel
包括template :: common
包括myfirewall
火墙
火墙
class {':: mymodule':
require => Class ['yumrepos :: epel'],
}
class {':: resolv':
local_resolver => true,
}
sysctl {'net.netfilter.nf_conntrack_max':
值=>'1048576',
确保=>'文件',
}
sysctl {'net.nf_conntrack_max':value => 1048576}
sysctl {
'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上的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定义的结尾。
我也曾尝试将types称为sysctl :: sysctl,并将定义的types封装在类中,然后将名称更改为set,然后将其作为sysctl :: set进行调用。 他们仍然没有工作。 如果我尝试include sysctl则会出现该类不存在的错误。
我在这里做错了什么?
看来,你无法定义实际的sysctl类。
在您的modules/sysctl/manifests/init.pp您至less应该有一个class sysctl集合,然后包含您定义的types(应该用不同的方式来命名),如下所示:
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 。 那么它应该工作。