Sto provando a creare una ricetta Chef per aggiungere più righe (20-30) a un file di configurazione specifico.Utilizzo di una ricetta Chef per aggiungere più righe a un file di configurazione
Sono a conoscenza che lo schema consigliato è change entire config files anziché aggiungere semplicemente un file, ma non mi piace questo approccio per diverse ragioni.
Finora l'unica soluzione che ho trovato è stato quello di utilizzare un cookbook_file
e quindi utilizzare una risorsa bash di fare:
cat lines_to_append >> /path/configfile
Ovviamente questo non avrebbe funzionato correttamente, in quanto sarebbe aggiungere il file su e oltre, ogni volta che gestisci lo chef-cliente. Dovrei creare un piccolo script bash per verificare prima una stringa specifica e, se non trovato, aggiungere al file.
Ma questo sembra vanificare lo scopo di utilizzare Chef. Ci deve essere un modo migliore.
Una soluzione promettente era la line cookbook dalla comunità OpsCode. Ha mirato a risolvere questo problema esatto. Sfortunatamente la funzionalità è incompleta, buggata e il codice è solo un rapido trucco. Lungi dall'essere una soluzione solida.
Un'altra opzione che ho valutato era augeas. Sembra piuttosto potente, ma aggiungerebbe ancora un altro livello di astrazione al sistema. Overkill, nel mio caso.
Dato che questo è uno dei compiti più ovvi per qualsiasi sysadmin, c'è una soluzione facile e bella con lo Chef che non vedo?
EDIT: ecco come sto risolvendo finora:
cookbook_file "/tmp/parms_to_append.conf" do
source "parms_to_append.conf"
end
bash "append_to_config" do
user "root"
code <<-EOF
cat /tmp/parms_to_append.conf >> /etc/config
rm /tmp/parms_to_append.conf
EOF
not_if "grep -q MY_IDENTIFIER /etc/config"
end
Funziona, ma non è sicuro questo è il modello Chef consigliato.