Puoi notificare una risorsa definita che hai dichiarato altrove nel catalogo. Che ne dici di un esempio?
Sistema CentOS, httpd installato e arrestato. Testato con Puppet 2.7.18
$ service httpd status
httpd è stato arrestato
Ecco un manifest di esempio che contiene una risorsa exec all'interno di un tipo di risorsa definito, una dichiarazione di quel tipo di risorsa definito e una risorsa di servizio che notifica quel tipo di risorsa definito.
./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'],
}
Quando applico questo, il cambio di stato nella mia risorsa del servizio httpd attiva una notifica alla risorsa Foo ['bar']. Questa notifica si applicherà a qualsiasi servizio o risorse exec utilizzate all'interno del tipo di risorsa definito 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
Ha senso? Devi semplicemente notificare la risorsa che hai dichiarato. Attiverà tutte le risorse exec o di servizio esposte all'interno del tipo di risorsa definito.