Ansible - 按"X"天/分钟增加日期

Ais*_*shi 3 datetime ansible

变量ansible_date_time.date给出了当前的日期和时间戳,但我希望将此日期增加'X'分钟/天.有没有内置的方法或逻辑来做到这一点?

-操作似乎带有日期的操作数的工作,但似乎没有要递增日期的任何直接的方式.

我想在yml脚本本身完成此操作,而不是使用其他Python脚本,如可以在Ansible Playbook中操作日期

Wil*_*ich 5

在Ansible 2.4中,您可以strftime通过使用纪元时间然后使用strftime过滤器转换回字符串来实现此目的.

例如,将一天视为86400秒,添加3天将是:

- debug:
    msg: "{{ '%Y-%m-%d' | strftime( ( ansible_date_time.epoch | int ) + ( 86400 * 3 )  ) }}"
Run Code Online (Sandbox Code Playgroud)

对于分钟,乘数将为60秒,并且开始时的日期时间格式字符串应包括适当的时间粒度(例如%H,%M,%S,......).

有此滤镜的一些文件在这里.


Ais*_*shi 3

可以使用命令模块(如以下代码片段所示)来增加当前日期。正如预期的那样,这对我有用。

- command: "date +'%d-%m-%Y' -d '+3 days'"
  register: result

- debug: msg="{{result.stdout}}"
Run Code Online (Sandbox Code Playgroud)

这将以 dd-mm-yyyy 格式返回日期。例如,如果今天的日期是“03-07-2017”,它将将该日期增加 3 天(如上面示例片段中所示的命令中所述)并返回“06-07-2017”。

  • 这是仅适用于 Linux 的方法...例如,标志 `-d` 在 FreeBSD 上的含义就非常不同。 (4认同)