У меня есть определенный тип в modules/sysctl/manifests/init.pp
это выглядит так:
define sysctl ( $value = undef, $ensure = undef ) { # Parent purged directory include sysctl::base # The permanent change file { "/etc/sysctl.d/${title}.conf": owner => 'root', group => 'root', mode => '0644', content => "${title} = ${value}\n", ensure => $ensure, notify => Exec["sysctl-${title}"], } # The immediate change exec { "sysctl-${title}": command => "/sbin/sysctl -w ${title}=${value}", refreshonly => true, } }
В модуле шаблона modules/template/manifests/api.pp
который наследуется узлом, который я использую:
class template::api { include yumrepos::epel include template::common include myfirewall Firewall Firewall class { '::mymodule' : require => Class['yumrepos::epel'], } class { '::resolv' : local_resolver => true, } sysctl { 'net.netfilter.nf_conntrack_max': value => '1048576', ensure => 'file', } sysctl { 'net.nf_conntrack_max' : value => 1048576 } sysctl { 'net.netfilter.nf_conntrack_tcp_timeout_established' : value => 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 и обернуть определенный тип в класс и изменить имя для установки, а затем вызвать его как sysctl :: set. Они все еще не работали. Если я попытаюсь include sysctl
Я получаю сообщение об ошибке, что класс не существует.
Что я здесь делаю не так?
Вы нигде не определяете фактическое sysctl
класс, кажется.
В твоем modules/sysctl/manifests/init.pp
у вас должен быть как минимум class sysctl
set, а затем включил ваш определенный тип (который должен называться иначе, чем сам класс), например:
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
на вершине. Тогда должно работать.