如何在Ansible中为当前时间戳添加指定时长?
解决方案
你可以通过两种方式实现时间叠加需求,优先推荐Ansible原生方案,兼容性更强:
1. 跨平台原生方案(推荐)
无需依赖系统命令,所有Ansible运行环境通用:
# 写法1:通过时间戳计算(兼容所有Ansible版本) vars: # 300秒 = 5分钟 start_time: "{{ (ansible_date_time.epoch | int + 300) | strftime('%Y-%m-%d %r') }}" # 900秒 = 15分钟 end_time: "{{ (ansible_date_time.epoch | int + 900) | strftime('%Y-%m-%d %r') }}" # 写法2:通过timedelta直观定义(Ansible 2.10及以上版本支持) vars: start_time: "{{ (now() + timedelta(minutes=5)) | strftime('%Y-%m-%d %r') }}" end_time: "{{ (now() + timedelta(minutes=15)) | strftime('%Y-%m-%d %r') }}"
如果需要输出UTC时间,把now()替换为utcnow()即可。
2. 系统date命令适配方案
仅Linux控制节点可用,修改你原有调用date命令的写法即可:
vars: start_time: "{{ lookup('pipe', 'date -d \"+5 min\" +\"%Y-%m-%d %r\"') }}" end_time: "{{ lookup('pipe', 'date -d \"+15 min\" +\"%Y-%m-%d %r\"') }}"
内容的提问来源于stack exchange,提问作者oakenshield
相关产品推荐
相关产品推荐

