ansible_date_time: Format Dates, Time & Timestamps in Playbooks
By Luca Berton · Published 2024-01-01 · Category: database-automation
How to use ansible_date_time fact in playbooks. Access date, time, epoch, ISO8601 timestamps. Format dates with strftime filter, create time-based filenames. Practical Ansible examples.
How to Use Date, Time, and Timestamp in Ansible Playbook
Welcome to another episode of Ansible Pilot! I'm Luca Berton, and today we're diving into the fascinating world of handling date, time, and timestamps in Ansible Playbooks. We'll explore the ansible_date_time variable, conduct a live Playbook, and provide you with simple Ansible code to get started.
The ansible_date_time Variable
Ansible simplifies working with date and time information through the ansible_date_time variable. This built-in variable comes packed with a wealth of information, neatly organized into key-value pairs. Let's take a closer look at some of the key values it provides:
These values cover everything from the current date, time, and timezone to more detailed information like the day of the week, month, and year. This data can be immensely useful in various scenarios within your Ansible Playbook.
One important note: to leverage the ansible_date_time variable, ensure that Ansible Facts are enabled in your playbook by including gather_facts: true.
Playbook
Are you ready for a hands-on experience? Let's jump into a quick live Playbook where we'll showcase how to display the full ansible_date_time and the ISO8601 format.
Ansible Playbook Code
Execution
Run the following command to execute the playbook:
The output will provide detailed information about the current date and time, as well as the ISO8601 format.
Conclusion
Congratulations! You've just learned how to harness the power of date, time, and timestamp variables in your Ansible Playbooks. The ansible_date_time variable opens up a world of possibilities for managing time-related data effortlessly. Feel free to explore and integrate this knowledge into your automation workflows. Happy automating!
ansible_date_time Fact
Ansible provides date/time through the ansible_date_time fact (gathered automatically):
Available fields:
| Field | Example | Description | |-------|---------|-------------| | date | 2025-01-15 | Date (YYYY-MM-DD) | | time | 14:30:25 | Time (HH:MM:SS) | | iso8601 | 2025-01-15T14:30:25Z | ISO 8601 format | | epoch | 1736953825 | Unix timestamp | | weekday | Wednesday | Day name | | weekday_number | 3 | Day number (0=Sunday) | | month | 01 | Month number | | year | 2025 | Year | | hour | 14 | Hour | | minute | 30 | Minute | | tz | UTC | Timezone |
Common Use Cases
Timestamped backup file
Timestamped deployment directory
Log deployment time
Custom Date Formatting with strftime
strftime from epoch
Date Arithmetic
Calculate date offsets
Find files older than X days
FAQ
Why is the timestamp the same for all tasks?
ansible_date_time is gathered once at the start of the play. For a fresh timestamp per task, use:
How do I use a different timezone?
How do I compare dates?
Convert to epoch for numeric comparison:
Related Articles • Ansible Inventory Guide
Category: database-automation
Watch the video: ansible_date_time: Format Dates, Time & Timestamps in Playbooks — Video Tutorial