2013-02-15 13 views
5

Capisco che lo chef sia basato sul pull, nel senso che rileva eventuali modifiche nelle ricette e utilizza il client dello chef per installare le modifiche. Usiamo lo chef per richiamare le istanze EC2 ma lo chef-client che viene eseguito come un demone ogni 30 minuti e esegue nuovamente tutte le ricette causando modifiche indesiderate ad alcuni servizi. Mi piacerebbe sapere quali opzioni ci sono per cambiare questo ed eseguire lo chef-cliente su richiesta.Il demone dello chef viene eseguito ogni 30 minuti

seguito sono le opzioni che ho pensato finora,

  1. modificare il tempo di intervallo sul libro di cucina lo chef-client ad altissima tempo in modo che il demone non fa correre spesso.
  2. Dopo l'implementazione dell'istanza EC2, uccidere lo chef daemon ssh o forse anche una ricetta da chef.

Inoltre, credo che chef-client abbia programmato la rotazione dei registri su base settimanale, questo riavvierà nuovamente lo chef-cliente. Qualche idea su come evitare questo comportamento basato su pull?

+0

Run_list vuota di quel nodo. Lascia che chef-client esegua ogni 30 minuti senza fare nulla e "on demand" $ node node your_node modifica e aggiorna run_list. – karthik

risposta

10

Prima di tutto:

vostre ricette chef dovrebbe impostare il nodo 1 e la stessa configurazione, non importa quante volte lo chef viene eseguito. Inoltre, non devi mai riavviare alcun servizio da solo. Questo comportamento dovrebbe essere notificato dai file di configurazione, se vengono modificati. Per esempio:

service 'apache2' do 
    action [:enable, :start] 
end 

template '/etc/apache2/httpd.conf' do 
    action :create 
    [...] 
    notifies, :restart, 'service[apache2]' #this notification will launch, only if the file has changed 
end 

È inoltre possibile disabilitare il demone lo chef-client, eseguendo chef-client --once. In questo modo lo chef provvederà al provisioning del nodo e rimuoverà self da cron. Quindi in futuro verrà eseguito solo manualmente su richiesta.

Ma il tuo problema più grande è in realtà che la corsa del tuo chef-cliente causa modifiche ad alcuni dei tuoi servizi ad ogni corsa. Dovresti prima risolverlo.

+0

Grazie Draco. Tu sei quello su quale sia il problema più grande e deve essere risolto. Ma fino a quando non viene risolto, è necessario disabilitare il client nelle istanze EC2. L'utilizzo dell'opzione - once richiede una modifica a tutti i modelli nella ricetta? – pup784

+0

Intendevo il ricettario nel commento precedente. – pup784

+2

Non richiede alcun cambiamento nei ricettari. Basta accedere al nodo EC2 ed eseguire 'sudo chef-client --once'. Oppure "sudo service chef-client stop". Oppure creare una ricetta che arresti il ​​servizio: 'servizio 'chef-cliente' {azione [: stop,: disabilita]}'. Ci sono molte possibilità. –

0

Sono d'accordo con ciò che Draco ha detto sulla risoluzione del problema sottostante, ma se si desidera interrompere lo chef-client ogni 30 minuti, si dovrebbe essere in grado di rimuovere la ricetta chef-client :: service dalla propria esecuzione elenco. Vedi lo chef-client README.

0

Se si creano i file di configurazione dai databags dello chef, si desidera ordinare i risultati dalle ricerche poiché questi saranno non restituiti nello stesso ordine in diverse esecuzioni. Se non si ordinano i risultati, si avranno i servizi Apache che si riavviano troppo spesso senza un motivo apparente.

Assicurati che il tuo chef-cliente sia in esecuzione con i dati identici. Non posso sottolineare abbastanza questo.

Problemi correlati