Sie können eine definierte Ressource benachrichtigen, die Sie an anderer Stelle im Katalog deklariert haben. Wie wäre es mit einem Beispiel?
CentOS-System, httpd installiert und gestoppt. Getestet mit Puppet 2.7.18
$ service httpd status
httpd wird gestoppt
Hier ist ein Beispielmanifest, das eine Exec-Ressource innerhalb eines definierten Ressourcentyps, eine Deklaration dieses definierten Ressourcentyps und eine Serviceressource enthält, die diesen definierten Ressourcentyp benachrichtigt.
./notify_defined_types.pp
define foo(){
exec { "${name}_exec":
command => "echo hello ${name}",
path => '/bin:/usr/bin',
refreshonly => true,
logoutput => true,
}
}
foo { 'bar': }
service { 'httpd':
ensure => running,
notify => Foo['bar'],
}
Wenn ich dies anwende, löst die Statusänderung in meiner httpd-Serviceressource eine Benachrichtigung an die Foo-Ressource ['bar'] aus. Diese Benachrichtigung gilt für alle Service- oder Exec-Ressourcen, die innerhalb des von foo definierten Ressourcentyps verwendet werden.
$ puppet apply notify_defined_types.pp
notice: /Stage[main]//Service[httpd]/ensure: ensure changed 'stopped' to 'running'
notice: /Stage[main]//Foo[bar]/Exec[bar_exec]/returns: hello bar
notice: /Stage[main]//Foo[bar]/Exec[bar_exec]: Triggered 'refresh' from 1 events
notice: Finished catalog run in 0.51 seconds
$ puppet apply notify_defined_types.pp
notice: Finished catalog run in 0.38 seconds
Sinn ergeben? Sie benachrichtigen einfach die von Ihnen deklarierte Ressource. Es werden alle Exec- oder Service-Ressourcen ausgelöst, die innerhalb des definierten Ressourcentyps verfügbar gemacht werden.