Como configurar um manipulador para uma notificação ou assinatura em um tipo definido?

8

Como adiciono o manipulador a um tipo definido no fantoche? Por exemplo, se eu tiver:

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

Como posso ter um manipulador em foo::bar para manipular algo que contenha

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

?

O manipulador então executaria vários Execs dentro da lógica condicional quando receber uma notificação.

    
por Kyle Brandt 17.08.2012 / 22:10

1 resposta

7

Você pode notificar um recurso definido que você declarou em outro lugar no catálogo. Que tal um exemplo?

Sistema CentOS, httpd instalado e parado. Testado com Puppet 2.7.18

$ status do serviço httpd
o httpd está parado

Aqui está um manifesto de exemplo que contém um recurso exec dentro de um tipo de recurso definido, uma declaração desse tipo de recurso definido e um recurso de serviço que notifica esse tipo de recurso definido.

./ 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 eu aplico isso, a mudança de estado em meu recurso de serviço httpd aciona uma notificação para o recurso Foo ['bar']. Esta notificação será aplicada a qualquer serviço ou recursos exec usados dentro do tipo de recurso foo definido.

$ 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

Faz sentido? Você simplesmente notifica o recurso que você declarou. Isso acionará qualquer exec ou recursos de serviço expostos dentro do tipo de recurso definido.

    
por 18.08.2012 / 02:57

Tags