Come impostare un gestore per una notifica o una sottoscrizione in un tipo definito?


8

Come faccio ad aggiungere un gestore a un tipo definito nel pupazzo? Ad esempio, se ho:

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

Come posso avere un gestore foo::barper gestire qualcosa che contiene

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

?

Il gestore eseguirà quindi vari Exec all'interno della logica condizionale quando riceve una notifica.

Risposte:


7

Puoi notificare una risorsa definita che hai dichiarato altrove nel catalogo. Che ne dici di un esempio?

Sistema CentOS, httpd installato e arrestato. Testato con Puppet 2.7.18

$ service httpd status
httpd è stato arrestato

Ecco un manifest di esempio che contiene una risorsa exec all'interno di un tipo di risorsa definito, una dichiarazione di quel tipo di risorsa definito e una risorsa di servizio che notifica quel tipo di risorsa definito.

./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 applico questo, il cambio di stato nella mia risorsa del servizio httpd attiva una notifica alla risorsa Foo ['bar']. Questa notifica si applicherà a qualsiasi servizio o risorse exec utilizzate all'interno del tipo di risorsa definito 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

Ha senso? Devi semplicemente notificare la risorsa che hai dichiarato. Attiverà tutte le risorse exec o di servizio esposte all'interno del tipo di risorsa definito.


2
Come si fa l'inverso? Diciamo che voglio che il servizio si iscriva a Foo ['bar']? Grazie
José F. Romaniello,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.