从Jinja表达式中减去日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Jinja表达式中减去日期相关的知识,希望对你有一定的参考价值。

我只想在Ansible任务中将date_operation删除1个月

vars:
  # for example current
  current_date_operation: "{{ ansible_date_time.date }}" 
  previous_date_operation : "{{ '%Y-%m-%d'|strftime(current_date_operation.epoch|int - 2592000) }}"

我想从current_date_operation中减去date_operation 1个月,但以上代码给了我以下错误:

“ msg”:“任务包括带有未定义变量的选项。错误是:'ansible.utils.unsafe_proxy.AnsibleUnsafeText对象'没有属性'epoch'

任何想法?

谢谢

答案

vars声明中,您首先是从对象date获取ansible_date_time键。

[在下一行,您正在使用该设置变量(它是一个字符串),并在其上调用键epoch,该键不存在,因为它是父对象(即ansible_date_time)的属性。由于您的var声明无法正确解析,因此var本身是未定义的。

以下剧本演示您可以通过修改vars定义来获得预期的结果:

---
 - hosts: localhost

   vars:
     current_date_operation: "{{ ansible_date_time.date }}"
     previous_date_operation : "{{ '%Y-%m-%d' | strftime(ansible_date_time.epoch | int - 2592000) }}"

   tasks:
     - debug:
         var: current_date_operation
     - debug:
         var: previous_date_operation

试运行:

$ ansible-playbook playbook.yml 

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [localhost]

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "current_date_operation": "2020-01-14"
}

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "previous_date_operation": "2019-12-15"
}

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

以上是关于从Jinja表达式中减去日期的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个日期中减去一个日期? [复制]

Javascript 从日期开始减去增加1个月 [重复]

如何从 Java 8 Date API 中的回历日期中减去回历年份

在Javascript中也减去日期减去月份[重复]

从日期我只想在javascript / angularjs中减去1天

使用 SORT 从日期中减去天数