2012-04-25 12 views
7

Ho un server gestito da Chef. Ho bisogno di accedere ad alcuni valori che vivono in una borsa dati di un libro di cucina da script non gestiti da Chef.Come accedere ai valori attuali da una borsa dati dello Chef?

/* Lo Chef REST API consente di accedere ai valori della borsa dati come visualizzato dal server Chef. Questo non è quello che voglio. Ogni esecuzione di chef-client può introdurre un numero di modifiche coordinate, comprese le modifiche nel sacchetto di dati. Se i dati sul server erano già stati modificati ma l'chef-client non è ancora stato eseguito localmente, l'installazione locale e la busta dati lato server potrebbero non essere sincronizzati. */

Vedo due soluzioni:

  • Parse/importare il file di dati di borsa sotto /var/cache/chef/cookbooks/<book-name> dal momento che è più o meno normale Ruby.
  • All'interno di una ricetta, scaricare i dati rilevanti dalla borsa dei dati in un file semplice accessibile dai miei script.

Ci sono opzioni migliori?

+0

C'è una ragione per cui non puoi fare quello che vuoi in una ricetta dello Chef? –

+0

@Jordan: no, questo può essere fatto da una ricetta poiché sembra essere l'unica opzione facile. risposta accettata propone. – 9000

risposta

7

Il dump dei dati dall'hash del nodo o dai pacchetti di dati in un file separato è un buon modo di comunicare tra il server Chef e gli script in esecuzione su un nodo. Se lo script in grado di analizzare JSON, allora è davvero facile:

file "/etc/script.json" do 
    owner "root" 
    group "root" 
    mode 0644 
    content node[:whatever].to_json 
end 

Utilizzando l'interfaccia Chef REST suona come eccessivo, e brancolando in/var/cache/cuoco è semplicemente maleducato. (-:

Problemi correlati