Chef cookbook_file execută scriptul dacă este actualizat (Programare, Chef Infra)

TheCompWiz a intrebat.

Știe cineva dacă este posibil să se facă o resursă de script dependentă de vremea sau nu a fost actualizat un fișier cookbook_file?

1 răspunsuri
Tejay Cardon

Dependent de, nu. Dar puteți configura o notificare astfel încât una să o declanșeze pe cealaltă.

cookbook_file 'something'

script 'myscript' do
  ....
  action :nothing
  subscribes :run, 'cookbook_file[something]' #, :immediately
end

Dacă decomentați fișierul immediately aceasta va rula imediat după actualizarea fișierului cookbook_file, dacă o lași comentată (sau o elimini) atunci va rula la sfârșitul rulării chef.

De fapt, dacă mă gândesc mai bine, ai putea face acest lucru, dar ar fi oarecum urât. Netestat

r = cookbook_file 'my_file'

script 'myscript' do
  command lazy{r.updated ? "your command" : "no-op"}
end

cu toate acestea, resursa de script ar „executa” la fiecare execuție chef, deci pierdeți idempotența.

Comentarii

  • Nu văd niciun beneficiu în cea de-a doua abordare. Prima este cea pe care aș folosi-o eu (o alternativă ar fi să aveți notifies în cookbook_file, , în loc de script care să se aboneze la acesta). –  > Por StephenKing.
  • @StephenKing Nu aș putea fi mai mult decât de acord. Notificările sunt calea de urmat, dar dacă ar exista un motiv pentru care o notificare nu este o opțiune, atunci cred că a doua abordare ar putea funcționa, dar aș evita-o în continuare dacă este posibil. –  > Por Tejay Cardon.