chef kann nicht erstellt cron
Habe ich versucht, das einfachste Beispiel ist gegeben durch http://docs.opscode.com/resource_cron.html#examples
cron "name_of_cron_entry" do
hour "8"
weekday "6"
mailto "[email protected]"
action :create
end
Benutze ich Messer ssh zu machen, das Rezept läuft auf einem chef-client, und der client gibt den Fehler:
Error executing action create on resource cron[name_of_cron_entry]
Error updating state of name_of_cron_entry, exit: 1
hat jemand begegnet das gleiche problem vor? Alle Lösungen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stolperte ich in das selbe problem und festgestellt, dass das Beispiel, das ich mit hatte Zeilenumbrüche drin. Das problem war, dass der cron-provider läuft
crontab -u user -
und Rohre STDIN, um den Prozess. Es scheint, dass es nicht akzeptieren Zeilenumbrüche sowie aus welchem Grund auch immer.In
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/provider/cron.rb
fand ich dies:Komischerweise läuft dein Beispiel scheint, für mich zu arbeiten, und erstellt eine leere crontab-Eintrag für root:
Dies lässt mich vermuten, dass Sie mit einer anderen version der Küchenchef gem & cron-Anbieter.
So, je nach version der Küchenchef Perle, die Sie verwenden, könnte es sein, dieser Fehler
Referenz, das Beispiel, das hat bei mir nicht funktioniert, wurde auf dieser Basis ein:
Den Befehl, den ich ausgeführt wurde, war:
Gab es 2 Updates, die für mich gearbeitet:
command 'cd /path/to/src/my-project && bundle exec my_script.rb'
cron
Anbieter zucron_d
Anbieter aus der cron-KochbuchHinweis: ich glaube nicht, dass Sie in der Dokumentation zum Anbieter in der chef ist korrekt, jedoch... Zeilenumbrüche werden nicht unterstützt in der crontab-format, es sei denn, Sie sind mit Backslashes
\
. In meinen Tests mit dem zweiten Update oben, die resultierende crontab war nicht gültig, und hatte newlines zwischen den Befehlen, die wurden nicht entgangen.user "opscode"
ist, was Sie gesetzt hatten, als ein Beispiel. Sie haben sich seitdem geändert in diesem Beispiel zuuser "getchef"
... Wenn ich es getestet habe ich natürlich verändert Sie entsprechend einen Benutzer, der bereits existierte, für meinen Anwendungsfall.Ich lief in den gleichen Fehler von Koch:
"Fehler beim aktualisieren der Zustand der name_of_cron_entry, Ausgang: 1"
Aber in meinem Fall, das Problem war ein schlechter Tag-des-Monats-Wert aus einem bedingten Ausdruck. Wenn newline-in-Befehl ist nicht Ihr Problem, stellen Sie sicher, dass Sie den rest Ihres cron-Parameter die Anforderungen passen:
Minuten: 0-59
Stunden: 0-23
Tag-des-Monats: 1-31
Monat: 1-12 oder JAN-DEC
Tag-der-Woche: 0-6 oder so-SA
Jahr: 1970-2099
Einen anderen Grund für diesen Fehler könnte sein, dass der Befehl, den Sie hinzuzufügen versuchen, um die crontab zu lang.
Die maximale Länge für einen cron-Befehl 999-Zeichen finden Sie unter hier.
den Dokumentation besagt, dass wenn ein Benutzer nicht explizit angegeben ist chef versucht, ändern Sie das root-cron. dies, offensichtlich, nicht, nicht.
Lösungsansätze:
1. geben Sie einen Benutzer in Ihrem Rezept
2. ausführen Koch-gelten als root (nicht empfohlen)
chef-apply
out of scope hier, es soll verwendet werden für test/one-shot-änderungen, die auf einer workstation, nicht für die Verwaltung. Und chef-client soll als root ausgeführt werden, so ist es absolut nicht entmutigen. (Und FWIW, der Standardwert ist root, weil chef soll als root ausgeführt werden). (Spät-Kommentar sorry, aber wenn es sich lohnt, es zu sagen)