7

The variable ansible_date_time.date gives the current date and time stamp, however I wish to increment this date by 'X' minutes/days. Is there any built in method or logic to do this?

The - operator seems to work with date operands, however there doesn't seem to be any straightforward way to increment a date.

I want to accomplish this in a yml script itself and not by using additional Python scripting as described in Is it possible to manipulate the date in an Ansible Playbook

Willem van Ketwich
  • 5,666
  • 7
  • 49
  • 57
Aishwaryameenakshi
  • 189
  • 1
  • 1
  • 9

2 Answers2

12

In Ansible 2.4 you can use strftime to accomplish this by using epoch times and then converting back to a string using the strftime filter.

For example, taking one day as 86400 seconds, to add 3 days would be:

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

For minutes, the multiplier would be 60 seconds, and the datetime format string at the start should include the appropriate time granularity (e.g. %H, %M, %S, ...).

There is some documentation on this filter here.

Willem van Ketwich
  • 5,666
  • 7
  • 49
  • 57
3

The command module can be used as shown in the following snippet to increment the current date. This worked for me as expected.

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

- debug: msg="{{result.stdout}}"

This will return the date in dd-mm-yyyy format. For example, if today's date is "03-07-2017", it will increment the date by 3 days (as mentioned in the command shown in above example snippet) and would return "06-07-2017".

Aishwaryameenakshi
  • 189
  • 1
  • 1
  • 9