2015-11-13 5 views
0

Вот мой код, не беспокойтесь о переменной, которая уже установлена ​​в исходном коде. Я просто помещаю небольшой фрагмент здесь, чтобы показать вам, что он делает. После обновления кода файла /etc/sysctl.d/pgsql.conf, но не запускается notify или Exec, чтобы перезагрузить файл. что здесь не так?puppet notify Exec не работает

$sysctl_config = "/etc/sysctl.d/pgsql.conf" 

exec { 'update_sysctl_shmall': 
      unless => "grep -q ^kernel.shmall ${sysctl_config}", 
      command => "/bin/echo \"kernel.shmall = ${shmall}\" >> ${sysctl_config}", 
     } 

     file { '/etc/sysctl.d/pgsql.conf': 
      ensure => present, 
      notify => Exec['reload_sysctl'] 
     } 

     exec { 'reload_sysctl': 
      provider => shell, 
      command => '/bin/sysctl --system', 
      logoutput => 'on_failure', 
      refreshonly => true, 
     } 

ответ

1

Следующий код:

file { '/etc/sysctl.d/pgsql.conf': 
    ensure => present, 
    notify => Exec['reload_sysctl'] 
} 

гарантирует только то, что /etc/sysctl.d/pgsql.conf файл существует. Если файл существует, он ничего не сделает, поэтому Exec не был запущен для перезагрузки файла. Пожалуйста, ознакомьтесь со следующими ссылками об уведомлениях в кукольном 1, 2.

UPDATE:

Рассмотрите возможность использования audit metaparemeter:

file { '/etc/sysctl.d/pgsql.conf': 
    audit => 'content', 
    ensure => present, 
    notify => Exec['reload_sysctl'] 
} 
+0

я хочу всегда, когда 'и т.д./sysctl.d/pgsql.conf' обновление/файл или изменить его будет запускать'/bin/SYSCTL --system' команда перезагрузить файл для системы. – Satish

+0

Я обновил свой ответ, пожалуйста, проверьте, работает ли параметр аудита. – kkamilpl

Смежные вопросы