burattino: forza il riavvio del servizio dopo la modifica del file di configurazione


21

come posso assicurarmi che se viene riavviata una nuova versione del file di configurazione tramite fantoccio dal repository principale a uno dei servizi pertinenti dei server gestiti?

scenario tipico - diciamo che c'è una nuova configurazione di munin o apache. il client fantoccio lo scopre, sovrascrive i file locali ... e ... - come assicurarsi che il servizio venga riavviato / ricaricato?

molte grazie!

Risposte:


23

Un'alternativa per notificare è iscriversi:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

La differenza è che la relazione è descritta dall'altra parte. Ad esempio, potresti far iscrivere apache a /etc/apache/httpd.conf, ma faresti notificare ad apache un file vhost, poiché la tua classe apache non sarà a conoscenza di tutti i vhost che possiedi.

Una simile situazione a doppia estremità si applica a richiesta e prima. È solo una questione di ciò che ha più senso nella situazione particolare.

Come accennato da Chad, se trovi un pupazzo che cerca costantemente di avviare il tuo servizio, devi aggiungere un parametro modello, che è una regex da applicare all'elenco dei processi. Per impostazione predefinita, il burattino farà un arresto e inizierà a riavviare un servizio. Se aggiungi "hasrestart => true", utilizzerà il comando specificato nel parametro "restart" per riavviare il servizio.


22

sembra di aver trovato qualcosa:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

vedremo come funzionerà. comunque i tuoi pensieri sull'argomento sono ben accetti.


1
Sì. Puoi trovare i dettagli nel riferimento al tipo di pupazzo sotto "Metaparameters" ( reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters )
Chad Huneycutt,

1
Oh, e in base al tuo sistema operativo, potresti dover giocare con i parametri hasstatus, hasrestart e / o pattern del tipo di servizio.
Chad Huneycutt,

2

(So ​​che questa è una domanda super vecchia, ma ho pensato di inserire i miei due centesimi con un (secondo me) un modo molto più semplice di farlo)

Sentiti libero di usare anche la notazione a freccia:

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

o

File['/etc/sshd_config'] ~> Service['sshd']

nel tuo primo esempio non hai bisogno dell'opzione di notifica se usi la freccia
c4f4t0r

Ops. Ho appena copiato e ho dimenticato di eliminarlo.
Ethan Brouwer,

1

Questo funziona per Solaris 10 :)

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}

0

Esistono più notazioni equivalenti:

Notifica :

file { '/etc/sshd_config':
    notify => Service[sshd],
}

service { sshd:
    ensure => running
}

Iscriviti :

file { '/etc/sshd_config':
   ...
}

service { sshd:
    ensure => running,
    subscribe => File['/etc/sshd_config'],
}

Notazione freccia :

File['/etc/sshd_config'] ~> Service['sshd']

Dichiarazioni concatenate

file { '/etc/sshd_config':
   ...
}
~> service { sshd:
    ensure => running,
}

Se si desidera attivare reloadinvece di restart, regolare la dichiarazione di servizio:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}
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.