回答:
カタログの他の場所で宣言した定義済みのリソースに通知できます。例はどうですか?
CentOSシステム、httpdがインストールおよび停止されました。Puppet 2.7.18でテスト済み
$サービスhttpdステータス
httpdが停止しました
以下は、定義されたリソースタイプ内のexecリソース、その定義されたリソースタイプの宣言、およびその定義されたリソースタイプに通知するサービスリソースを含むマニフェストの例です。
./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'],
}
これを適用すると、httpdサービスリソースの状態が変化すると、Foo ['bar']リソースへの通知がトリガーされます。この通知は、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
理にかなっていますか?宣言したリソースに通知するだけです。定義されたリソースタイプ内で公開されているexecまたはサービスリソースをトリガーします。