现在用的是ansible_date_time.hour
和ansible_date_time.minute
在我的剧本之一。
但我需要在增加时间到这些事实(或变量)..也就是说,如果ansible_date_time.hour
返回16 -我想补充一两个小时,或者如果ansible_date_time.minute
返回40 -我希望它是50。 。
当然也有23和59的小时,分钟......我想过从注册一个变量天花板:
- name: Register HH
shell: date '+%H'
register: HP_HH
- debug: msg="{{ HP_HH.stdout | int + 3 }}"
但是很明显,如果我的剧本在21:00之后运行我的运气。
有没有人有一个建议或解决方法吗?
据我所知,没有办法加/减时间单位出Ansible盒子。
您可以将字符串转换为datetime
的对象与to_datetime
过滤器(Ansible 2.2+)。
你可以计算的时间差。 见这个答案。
但是,如果你不介意使用一个简单的过滤器插件,在这里你去:
放弃这一代码./filter_plugins/add_time.py
你的剧本附近:
import datetime
def add_time(dt, **kwargs):
return dt + datetime.timedelta(**kwargs)
class FilterModule(object):
def filters(self):
return {
'add_time': add_time
}
你可以使用自己的add_time
过滤器如下:
- hosts: localhost
gather_facts: yes
tasks:
- debug:
msg: "Current datetime is {{ ansible_date_time.iso8601 }}"
- debug:
msg: "Current time +20 mins {{ ansible_date_time.iso8601[:19] | to_datetime(fmt) | add_time(minutes=20) }}"
vars:
fmt: "%Y-%m-%dT%H:%M:%S"
add_time
具有相同的参数timedelta Python编写的。