Bagaimana cara mengatur Handler untuk Pemberitahuan atau Berlangganan dalam Jenis yang Ditentukan?

8

Bagaimana cara menambahkan pawang ke jenis boneka tertentu? Misalnya, jika saya punya:

define foo::bar ($baz) {
 ...
}

Bagaimana saya bisa memiliki handler foo::baruntuk menangani sesuatu yang mengandung

...
   notify => Foo::Bar['zippidy']
...

?

Pawang kemudian menjalankan berbagai Exec di dalam logika kondisional ketika menerima pemberitahuan.

Kyle Brandt
sumber

Jawaban:

7

Anda dapat memberi tahu sumber daya yang telah Anda tentukan di tempat lain di katalog. Bagaimana dengan contoh?

Sistem CentOS, httpd diinstal dan dihentikan. Diuji dengan Wayang 2.7.18

$ service httpd status
httpd dihentikan

Berikut ini contoh manifes yang berisi sumber daya exec di dalam tipe sumber daya yang ditentukan, deklarasi dari tipe sumber daya yang ditentukan dan sumber daya layanan yang memberitahukan jenis sumber daya yang ditentukan.

./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'],  
}

Ketika saya menerapkan ini, perubahan status di sumber daya layanan httpd saya memicu pemberitahuan ke sumber daya Foo ['bar']. Pemberitahuan ini akan berlaku untuk layanan apa pun atau sumber daya eksekutif yang digunakan di dalam jenis sumber daya yang ditentukan untuk 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

Masuk akal? Anda cukup memberi tahu sumber daya yang Anda nyatakan. Ini akan memicu sumber daya layanan atau eksekutif yang diekspos di dalam jenis sumber daya yang ditentukan.

Ryan Coleman
sumber
2
Bagaimana Anda melakukan kebalikannya? Katakanlah saya ingin layanan berlangganan Foo ['bar']? Terima kasih
José F. Romaniello