Opsworks Chef无法创建cron

时间:2016-09-12 20:11:34

标签: cron chef-recipe aws-opsworks

我尝试使用在AWS中运行opsworks的厨师创建一个cron任务。 我想我有一些许可问题,因为写错了,但我在哪里可以增加权限?或者我真的需要增加许可吗?

厨师:

cron 'crontest' do
  minute "0"
  hour "/2"
  day "*"
  month "*"
  weekday "*"
  command "ls"
end

日志:

Logs from opsworks:
------------------

[2016-09-12T19:47:13+00:00] INFO: Processing cron[crontest] action create (my::crontest line 1)

================================================================================
Error executing action `create` on resource 'cron[crontest]'
================================================================================

Chef::Exceptions::Cron
----------------------
Error updating state of crontest, exit: 1

Resource Declaration:
---------------------
# In /var/chef/runs/de35b7b0-20ad-4903-a5b1-e8e901695b5b/local-mode-cache/cache/cookbooks/my/recipes/crontest.rb

1: cron 'crontest' do
2:   minute "0"
3:   hour "/2"
4:   day "*"
5:   month "*"
6:   weekday "*"
7:   command "ls"
8: end

Compiled Resource:
------------------
# Declared in /var/chef/runs/de35b7b0-20ad-4903-a5b1-e8e901695b5b/local-mode-cache/cache/cookbooks/my/recipes/crontest.rb:1:in `from_file'

cron("crontest") do
action [:create]
retries 0
retry_delay 2
default_guard_interpreter :default
minute "0"
hour "/2"
day "*"
month "*"
weekday "*"
command "ls"
user "root"
declared_type :cron
cookbook_name "my"
recipe_name "crontest"
end

Platform:
---------
x86_64-linux

[2016-09-12T19:47:13+00:00] INFO: Running queued delayed notifications before re-raising exception
[2016-09-12T19:47:13+00:00] ERROR: Running exception handlers
[2016-09-12T19:47:13+00:00] ERROR: Exception handlers complete
[2016-09-12T19:47:13+00:00] FATAL: Stacktrace dumped to /var/chef/runs/de35b7b0-20ad-4903-a5b1-e8e901695b5b/local-mode-cache/cache/chef-stacktrace.out
[2016-09-12T19:47:13+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2016-09-12T19:47:13+00:00] ERROR: cron[crontest] (my::crontest line 1) had an error: Chef::Exceptions::Cron: Error updating state of crontest, exit: 1
[2016-09-12T19:47:13+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)


Logs from /var/chef/runs/de35b7b0-20ad-4903-a5b1-e8e901695b5b/local-mode-cache/cache/chef-stacktrace.out
------------------
>>>> Caused by Chef::Exceptions::Cron: Error updating state of crontest, exit: 1
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.13.37/lib/chef/provider/cron.rb:232:in `write_crontab'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.13.37/lib/chef/provider/cron.rb:157:in `block in action_create'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.13.37/lib/chef/mixin/why_run.rb:52:in `add_action'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.13.37/lib/chef/provider.rb:176:in `converge_by'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.13.37/lib/chef/provider/cron.rb:156:in `action_create'
/opt/chef/embedded/lib/ruby/gems/2.1.0/gems/chef-12.13.37/lib/chef/provider.rb:145:in `run_action'

1 个答案:

答案 0 :(得分:0)

我最近遇到了自己的OpsWorks(Chef 12)cron作业问题。我试图指定

weekday 'wed,fri'
cron作业定义中的

语法,虽然这在目标系统上是合法的,但它触发了Chef方法中的错误。该错误的症状是,每次执行此配方时,当前的crontab条目都没有被编辑/替换,在原始文件下面添加了一个副本。在我注意到问题之前,我有六条相同的线。

我使用

修复了我的具体问题
weekday '4,6' 

语法。我从中汲取的教训是,不要试图用你的cron工作配方远程聪明。使用最简单,最古老,最无聊的表示法来定义你的cron作业。

Chef cronjob代码使用正则表达式来确定要添加/编辑的行。应避免任何可能使解析器混淆的事情。