Назад | Перейти на главную страницу

Недействительный параметр для определенного типа

У меня есть определенный тип в 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 на вершине. Тогда должно работать.