Loading...

Watch: Use Date and Time in Ansible Without Facts

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 the date 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.

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](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/pipe_lookup.html)
  • [date man page](https://man7.org/linux/man-pages/man1/date.1.html)
  • [ISO8601](https://www.iso.org/iso-8601-date-and-time-format.html)

## 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

``yaml

---

  • 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

``bash

$ 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] *

Read the full tutorial: Use Date and Time in Ansible Without Facts