如何使用Chef在AWS Opsworks上为Rails设置cronjob?

时间:2015-02-21 08:57:41

标签: ruby-on-rails chef aws-opsworks

我尝试在AWS Opsworks上为我的Rails应用设置cronjob,但我不确定它是如何工作的。 AWS提供了官方文档:http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-extend-cron.html

cron "job_name" do
  hour "1"
  minute "10"
  weekday "6"
  command "cd /srv/www/myapp/current && rake task"
end

但我无法弄清楚它是如何运作的。我在哪里放上代码?它是我的rails应用程序中的文件吗?我该如何触发此代码?有自定义食谱吗?

2 个答案:

答案 0 :(得分:2)

正如评论中所建议的那样,每次部署应用程序后gem都会更新您的crontab。如果您使用它,那么转到crontab的代码就是您的应用程序代码库的一部分。如果您的cron作业正在运行任务与您的应用程序密切相关,例如一些rake任务或类似的东西,这种方法很棒。

您在亚马逊文档中找到的示例是如何从您的厨师食谱更新crontab。所以代码会进入你的食谱,当你运行它时,厨师会为你填充crontab。有关Chef's cron资源的更多信息,您可以find here

答案 1 :(得分:1)

我有一个只处理运行我的cron作业的cron层。它是一个自定义图层,然后我只添加了所有特定于rails的作业。如图所示。

带有用于运行rake任务的cron的rails的自定义层: https://www.dropbox.com/s/za3lkiuk8zayzs5/Screenshot%202015-03-01%2022.22.06.png?dl=0

kit-chef :: cronjob是我所有厨师cronjobs定义的地方。当我在这个配方中添加一个新的cronjob时,我只需要在此层上更新_custom_cookbooks并进行部署。

进行健全性检查并将ssh放入cron服务器和crontab -l作为sudo并确保添加新任务总是很好。显然,图片中的定制厨师食谱不再是您所需要的环境。