Ansible 创建可用的定时任务。

16
我想为数据挖掘在不同的服务器上同时设置cron作业。我已经按照Ansible和crontab中的步骤进行了尝试,但迄今为止什么都没有奏效。 无论我做什么,都会收到错误信息:


ERROR: cron is not a legal parameter at this level in an Ansible Playbook

我有:Ansible 1.8.1

由于某些原因,我的模块存储在以下路径中:/usr/lib/python2.6/site-packages/ansible/modules/

我想知道应该采取哪些具体步骤才能让 Ansible 在 crontab 文件中安装新的 cronjob。

  1. 要安装 cronjob 的剧本应该看起来像什么?
  2. 启动此剧本的命令是什么?

我问这个奇怪的问题是因为 cron 的文档不足,示例也不起作用。也许我的安装方式也有问题,我想通过一个可工作的 cron 示例来测试它。


请列出您正在尝试的playbook,我很乐意回答这个问题。 - tedder42
3个回答

21

我在 ./roles/cron/tasks/main.yml 文件中有一个非常类似于这样的内容:

- name: Creates weekly backup cronjob
  cron: minute="20" hour="5" weekday="sun"
        name="Backup mysql tables (weekly schedule)"
        cron_file="mysqlbackup-WeeklyBackups"
        user="root"
        job="/usr/local/bin/mysqlbackup.WeeklyBackups.sh"
  tags:
    - mysql
    - cronjobs

在main.yml文件中稍早之前创建了'job'中列出的shell脚本。

此任务将在/etc/cron.d/mysqlbackup-WeeklyBackups中创建一个文件:

#Ansible: Backup mysql tables (weekly schedule)
20 5 * * sun root /usr/local/bin/mysqlbackup.WeeklyBackups.sh

这只是创建文件还是设置它来执行?我在我的playbook中尝试了相同的操作。文件已经在指定的位置创建。但是当我执行crontab -l时,我收到了消息“用户没有crontab”。 - Ishan
4
crontabs -l 只会查看 '/var/spool/cron/crontabs/{用户名}' 目录下的内容。 (注:原文已经是中文,这里只是简化了句子结构和用词) - Alister Bulman

5
---
- hosts: servers
  tasks:
   - name: "Cronjob Entry"
     cron:
      name: "### recording mixing/compressing/ftping scripts"
      minute: 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57
      hour: "*"
      day: "*"
      month: "*"
      weekday: "*"
      job: /usr/share/astguiclient/AST_CRON_audio_1_move_mix.pl

我也收到了下面的输出。
#Ansible: ### recording mixing/compressing/ftping scripts
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_mix.pl

8
顺便提一下,你可以在分钟部分简单地使用*/3。 - Yaron

3
如果您正在设置该项内容以在用户的Crontab上运行:
- name: Install Batchjobs on crontab
  cron:
    name: "Manage Disk Space"
    minute: "30"
    hour: "02"
    weekday: "0-6"
    job: "home/export/manageDiskSpace.sh > home/export/manageDiskSpace.sh.log 2>&1"
    #user: "admin"
    disabled: "no"
  become_user: "{{ admin_user }}"
  tags:
   - cronjobs

参考文献[1]: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/cron_module.html#examples

这是一个关于Ansible的cron模块的参考链接,其中包含了使用该模块的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接