生成基于字符串的cron值保持相同

时间:2016-10-15 17:35:54

标签: random cron ansible

由于我使用ansible来设置cron任务,并且我想避免在我的所有服务器上同时运行相同的任务,我正在寻找一个优雅的解决方案来生成cron& #34;随机"通过在重新运行我的ansible角色时保持不重要性。

我已经制作了这个工作脚本:

li {
  list-style-type: none;
  padding: 0;
  margin: 0;
}

.main-contain{
  display: flex;
  justify-content: flex-end;
}

.lists {
  display: inline-block;
}

我们的想法是调用脚本并将服务器名称作为参数。

但我对自己的解决方案并不信服。有没有更好的方法呢?我正在寻找Ansible中直接提供的东西。

3 个答案:

答案 0 :(得分:3)

从Ansible 2.3版本开始,也可以从种子初始化随机数生成器。这样,您就可以创建随机但幂等的数字:

{{59 | random(seed = inventory_hostname)}} * * * * root / script / from / cron

答案 1 :(得分:1)

幂等cron任务,时间由inventory_hostname播种:

- cron:
    name: myjob
    job: myscript.sh
    minute: "{{ ( inventory_hostname | hash | list | map('int',0,16) | sum ) % 60 }}"
    hour: "{{ ( inventory_hostname | hash | list | map('int',0,16) | sum ) % 24 }}"

答案 2 :(得分:0)

使用带有随机值的ansible cron模块

- cron: name='JOB_NAME' job="JOB" minute={{ 59 |random }} hour={{ 4 |random(start=3) }}

这将创建一个cron作业,它的分钟范围(0-59)和小时范围(3-4)