gpt4 book ai didi

ansible - 是否可以在 Ansible Playbook 中操纵日期

转载 作者:行者123 更新时间:2023-12-01 15:34:07 25 4
gpt4 key购买 nike

我在我的一本剧本中使用了 ansible_date_time.houransible_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 中无法直接添加/减去时间单位。

您可以使用 to_datetime 过滤器 (Ansible 2.2+) 将字符串转换为 datetime 对象。
您可以计算日期差异。参见 this回答。

但是如果你不介意使用一个简单的过滤器插件,你可以这样做:

将此代码作为 ./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 中。

关于ansible - 是否可以在 Ansible Playbook 中操纵日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43769809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com