package { 'openssh-server':
ensure => installed,
}
file { '/etc/ssh/sshd_config':
source => 'puppet:///modules/sshd/sshd_config',
owner => 'root',
group => 'root',
mode => '640',
notify => Service['sshd'], # sshd will restart whenever you edit this file.
require => Package['openssh-server'],
}
service { 'sshd':
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
}
sshd will restart whenever you edit this file." is a bit confusing, because it hints at puppet using some kind of inotify mechanism to restart sshd when the config file changes.
Would it be better to write that sshd will restart whenever puppet updates this file?
This ensures order and trigger service restart when the file resource changes.
> require => Package['openssh-server'],
> }
>
> service { 'sshd':
> ensure => running,
> enable => true,
> hasstatus => true,
> hasrestart => true,
> }
>
>
>
> I can see two problems with this example, and rather than open a ticket I
> wanted to make sure I haven't overlooked something.
>
> 1. Is there any special magic requiring that the config file exist before
> Puppet starts the sshd service?
> If not, shouldn't there be a requires in the service on the config file?
The notify implies the order and triggers refresh on changes.
> 2. The sentence "sshd will restart whenever you edit this file." is a bit
> confusing, because it hints at puppet using some kind of inotify mechanism
> to restart sshd when the config file changes.
> Would it be better to write that sshd will restart whenever puppet updates
> this file?
Yes, it would make mores precise to say when the user update the
config (in the module), and run puppet to update the file, it will
trigger a service restart as well.
Nan
The Core Types Cheat Sheet at http://projects.puppetlabs.com/projects/puppet/wiki/Core_Types_Cheat_Sheet/ says:
The Trifecta
Package/file/service: Learn it, live it, love it. If you can only do this, you can still do a lot.package { 'openssh-server': ensure => installed, } file { '/etc/ssh/sshd_config': source => 'puppet:///modules/sshd/sshd_config', owner => 'root', group => 'root', mode => '640', notify => Service['sshd'], # sshd will restart whenever you edit this file. require => Package['openssh-server'], } service { 'sshd': ensure => running, enable => true, hasstatus => true, hasrestart => true, }
I can see two problems with this example, and rather than open a ticket I wanted to make sure I haven't overlooked something.
1. Is there any special magic requiring that the config file exist before Puppet starts the sshd service?
If not, shouldn't there be a requires in the service on the config file?
2. The sentence "sshd will restart whenever you edit this file." is a bit confusing, because it hints at puppet using some kind of inotify mechanism to restart sshd when the config file changes.
Would it be better to write that sshd will restart whenever puppet updates this file?
According to the
http://docs.puppetlabs.com/references/stable/metaparameter.html#notify
there is magic, namely the implicit 'before'.
...snip
References to one or more objects that depend on this object. This
parameter is the opposite of subscribe — it creates a dependency
relationship like before, and also causes the dependent object(s) to be
refreshed when this object is changed
snap...
but i remember vaguely that magic did not work for me not so long ago.
hmm.
--
Kind Regards, Markus Falb