ansible_date_time: Use Date, Time & Timestamps in Ansible Playbooks
By Luca Berton · Published 2024-01-01 · Category: troubleshooting
Learn how to use date, time, and timestamp in Ansible playbooks without facts. Follow our Playbook and simple Ansible code examples for quick solutions.

How to use Date, Time, and Timestamp without Facts in Ansible Playbook.
A quick and dirty workaround using thedate command-line utility.
I'm going to show you a live Playbook and some simple Ansible code.
I'm Luca Berton and welcome to today's episode of Ansible Pilot.
See also: ansible_date_time: Format Dates, Time & Timestamps in Playbooks
Using Date, Time, and Timestamp without Facts in Ansible Playbook
Date and time
• date +%Y-%m-%d@%H:%M:%S
ISO8601
• date --iso-8601=seconds
• date +%Y-%m-%dT%H:%M:%S%z
How to Use the Date, Time, and Timestamp in Ansible Playbook.
The ansible_data_time fact is an amazing resource but sometimes you can't have it or you don't want to use the date and time of the remote host.
These solutions enable you to print the Date and Time and ISO8601 format. I ended up after carefully reading the date man page.
Unfortunately not all the platforms support the --iso-8601 parameter so you need to build it manually the format by yourself (for example in macOS operating system).
Links
•ansible.builtin.pipe lookup plugin
• date man page
• ISO8601
## Playbook
Let's jump into a quick live Playbook of Using Date, Time, and Timestamp in the Ansible Playbook.
I'm going to share with you how to display the full ansible_date_time and the ISO8601 format.
code
---
- name: date and time Playbook
hosts: all
gather_facts: false
tasks:
- name: date and time
ansible.builtin.debug:
msg: "{{ lookup('pipe', 'date +%Y-%m-%d@$H:%M:%S') }}"
- name: iso8601 manual
ansible.builtin.debug:
msg: "{{ lookup('pipe', 'date +%Y-%m-%dT%H:%M:%S%z') }}"
- name: iso8601
ansible.builtin.debug:
msg: "{{ lookup('pipe', 'date --iso8601=seconds') }}"
ignore_errors: true
execution
$ ansible-playbook -i virtualmachines/demo/inventory variables/datetime_nofact.yml
PLAY [date and time Playbook] *************************************************************************
TASK [date and time] ******************************************************************************
ok: [demo.example.com] => {
"msg": "2022-05-22@:57:33"
}
TASK [iso8601 manual] *****************************************************************************
ok: [demo.example.com] => {
"msg": "2022-05-22T14:57:33+0200"
}
TASK [iso8601] ************************************************************************************
date: illegal option -- -
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
fatal: [demo.example.com]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'pipe'. Error was a <class 'ansible.errors.AnsibleError'>, original message: lookup_plugin.pipe(date --iso8601=seconds) returned 1. lookup_plugin.pipe(date --iso8601=seconds) returned 1"}
...ignoring
PLAY RECAP ****************************************************************************************
demo.example.com : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1
See also: Ansible Scheduled Tasks: Cron Jobs & at Module for Timed Execution
Conclusion
Now you know how to use the Date, Time and Timestamp without Ansible Facts in Ansible Playbook.
Related Articles
• Ansible inventory file structure • Ansible Ignore Errors GuideCategory: troubleshooting
Watch the video: ansible_date_time: Use Date, Time & Timestamps in Ansible Playbooks — Video Tutorial