정의 된 유형의 알림 또는 구독에 대한 처리기를 설정하는 방법은 무엇입니까?


8

퍼펫에서 정의 된 유형에 핸들러를 추가하려면 어떻게합니까? 예를 들어 내가 가진 경우 :

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

처리기 foo::bar가 들어있는 것을 처리하려면 어떻게해야합니까?

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

?

그런 다음 처리기는 알림을받을 때 조건부 논리 내부에서 다양한 Exec을 실행합니다.

답변:


7

카탈로그의 다른 곳에서 선언 한 정의 된 리소스에 알릴 수 있습니다. 예는 어떻습니까?

CentOS 시스템, httpd가 설치 및 중지되었습니다. 꼭두각시 2.7.18로 테스트

$ service 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 정의 리소스 유형 내에 사용 된 모든 서비스 또는 exec 리소스에 적용됩니다.

$ 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 또는 서비스 리소스를 트리거합니다.


2
반대로 어떻게합니까? 서비스가 Foo [ 'bar']에 가입하길 원한다고 가정 해 봅시다. 감사합니다
José F. Romaniello
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.