2012-01-18 2 views
6

Questa è un'attività di base, ma non riesco a trovare la documentazione. Sto facendo il boot con le macchine EC2 usando uno chef-server e uno chef. Se ciò fallisce vorrei sistemare le ricette e quindi reinstallare il ruolo e le ricette su quella macchina senza estrarre il nodo e crearlo nuovamente. Non riesco a trovare il comando che lo fa.Ricaricare le ricette dello chef se l'installazione non riesce o sono disponibili aggiornamenti

Se corro lo chef-client sulla macchina ottengo:

chef-client 
[Wed, 18 Jan 2012 11:23:58 +0000] INFO: *** Chef 0.10.0 *** 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Run List is [] 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Run List expands to [] 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Starting Chef Run for gidsy-staging-web 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Loading cookbooks [] 
[Wed, 18 Jan 2012 11:23:59 +0000] WARN: Node gidsy-staging-web has an empty run list. 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Chef Run complete in 0.508629 seconds 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Running report handlers 
[Wed, 18 Jan 2012 11:23:59 +0000] INFO: Report handlers complete 

Grazie

+0

La descrizione del problema non è molto chiara, tra EC2 e Chef c'è qualche sovrapposizione di termini. Non è chiaro cosa intendi per "senza estrarre il nodo e crearlo nuovamente" (nodo chef o nodo EC2?) Qual è l'output della tua corsa fallita? Perché la tua Run List è vuota? Non ho visto un'occasione in cui una mancata esecuzione di Chef avrebbe svuotato la lista di esecuzione di un nodo. – lhagemann

risposta

8

ho incontrato lo stesso problema, e questo è il modo ho risolto il problema.

In primo luogo, applicare il ruolo (s) in questione all'istanza con coltello:

$ knife node run_list add [NODE] [ENTRY] 

Be sure and include the items in [ENTRY] in quotes (for example, "role[my-role]"). 

Una volta che il ruolo è stato applicato alla istanza EC2, ho quindi richiamare lo chef-client sull'istanza in questione .

$ sudo chef-client 

Questo dovrebbe accelerare notevolmente il ciclo di sviluppo.

+0

sì, funziona. Grazie! questo mi salverà molto tempo. –

+0

Sei il benvenuto a Philipp! –

2

La risposta di Jordan mi ha davvero aiutato, ma per coloro che stanno iniziando lo chef come me, spiegherò un po 'più in dettaglio.

Sono in esecuzione su EC2 e si stava verificando l'errore sopra riportato. Questo è quello che ho fatto per risolvere il problema:

  1. sulla mia macchina locale, eseguire: knife ec2 server list per ottenere il nodo host sul server EC2
  2. Aggiungere l'elenco di esecuzione a quel nodo dalla mia macchina dev locale: knife node run_list add i-xxxxx "role[aws-db-deploy]" dove i-xxxxx è il nome del nodo
  3. ssh sul vostro AWS istanza EC2 ed eseguire il comando: sudo chef-client

Spero che questo aiuti

0

è possibile eseguire ° e chef-cliente con la runlist:

$ sudo chef-client --runlist <role>