Vous pouvez notifier une ressource définie que vous avez déclarée ailleurs dans le catalogue. Que diriez-vous d'un exemple?
Système CentOS, httpd installé et arrêté. Testé avec Puppet 2.7.18
$ service httpd status
httpd est arrêté
Voici un exemple de manifeste qui contient une ressource exec à l'intérieur d'un type de ressource défini, une déclaration de ce type de ressource défini et une ressource de service qui notifie ce type de ressource défini.
./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'],
}
Lorsque j'applique cela, le changement d'état dans ma ressource de service httpd déclenche une notification à la ressource Foo ['bar']. Cette notification s'appliquera à toutes les ressources de service ou d'exécution utilisées à l'intérieur du type de ressource défini foo.
$ 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
Ça a du sens? Vous notifiez simplement la ressource que vous avez déclarée. Cela déclenchera toutes les ressources d'exécution ou de service exposées à l'intérieur du type de ressource défini.