我有一个Ansible剧本中的以下YAML:
offset: "{{ publicip | regex_replace('^.*\\.([0-9]+)$', '\\\\1') | int % (step-1) + 1 }}" cron_minute_list: "{% for i in range(offset, 60, step) %}{{ i }},{% endfor %}"
但是当我运行的剧本,我得到这个错误:
fatal: [default] => Failed to template */{{ cron_minute_list | regex_replace('.$', '') }}: Failed to template {% for i in range(int_offset, 60, step) %}{{ i }},{% endfor %}: an unexpected type error occurred. Error was an integer is required
当我尝试在range语句中使用int(offset)时,我得到了其他错误。 附加一个| int | int到offset声明的结尾没有什么区别。
似乎没有办法将offset的types设置为整数而不是string。 我怎样才能解决这个问题?
如果还有另外一种方法来制定这样一个计划,那么我不必担心这个,那也是一个很好的答案。
最好的我可以告诉你,你正在尝试使用机器的IP来随机展示你的cron分钟。 Ansible有一个简单的randomfilter,我认为是非常合适的。 再加上cron模块和你的手册应该是非常简单的。
http://docs.ansible.com/ansible/cron_module.html http://docs.ansible.com/ansible/playbooks_filters.html#random-number-filter
cron_minute: {{ 59 | random(step=10) }} ... - cron: name="do something" minute="{{ cron_minute }}" job="echo 'I am but a lowly cron job.'"