在Ansible Jinja2filter中强制使用整数types

我有一个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 | intoffset声明的结尾没有什么区别。

似乎没有办法将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.'"