Làm cách nào để thiết lập Trình xử lý cho Thông báo hoặc Đăng ký trong Loại được xác định?


8

Làm cách nào để thêm trình xử lý vào một kiểu xác định trong con rối? Ví dụ: nếu tôi có:

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

Làm thế nào tôi có thể xử lý foo::barđể xử lý một cái gì đó có chứa

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

?

Trình xử lý sau đó sẽ chạy các Exec khác nhau bên trong logic có điều kiện khi nhận được thông báo.

Câu trả lời:


7

Bạn có thể thông báo một tài nguyên được xác định mà bạn đã khai báo ở nơi khác trong danh mục. Làm thế nào về một ví dụ?

Hệ thống CentOS, httpd được cài đặt và dừng lại. Thử nghiệm với con rối 2.7,18

$ dịch vụ httpd
httpd bị dừng

Đây là một bảng kê khai ví dụ chứa tài nguyên exec trong một loại tài nguyên được xác định, một khai báo về loại tài nguyên được xác định đó và một tài nguyên dịch vụ thông báo loại tài nguyên được xác định đó.

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

Khi tôi áp dụng điều này, sự thay đổi trạng thái trong tài nguyên dịch vụ httpd của tôi sẽ kích hoạt thông báo tới tài nguyên Foo ['bar']. Thông báo này sẽ áp dụng cho bất kỳ tài nguyên dịch vụ hoặc thực thi nào được sử dụng bên trong loại tài nguyên do foo xác định.

$ 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

Có lý? Bạn chỉ cần thông báo tài nguyên mà bạn đã khai báo. Nó sẽ kích hoạt bất kỳ tài nguyên thực thi hoặc dịch vụ nào được hiển thị bên trong loại tài nguyên được xác định.


2
Làm thế nào để bạn làm ngược lại? Giả sử tôi muốn dịch vụ đăng ký Foo ['bar']? Cảm ơn
Jose F. Romaniello
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.