这是我的代码,不用担心已经在原始代码中设置的变量。我只是在这里放一小段代码来向您展示它在做什么。以下代码更新文件 /etc/sysctl.d/pgsql.conf
但不触发 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,
}
最佳答案
以下代码:
file { '/etc/sysctl.d/pgsql.conf':
ensure => present,
notify => Exec['reload_sysctl']
}
仅确保 /etc/sysctl.d/pgsql.conf
文件存在。如果文件存在,它将什么都不做,这就是为什么 Exec
没有被触发重新加载文件的原因。
请检查以下有关 puppet 通知的链接 1 , 2 .
更新:
考虑使用 audit元参数:
file { '/etc/sysctl.d/pgsql.conf':
audit => 'content',
ensure => present,
notify => Exec['reload_sysctl']
}
关于ruby - puppet 通知 Exec 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697825/