fact – Ansible date variable

fact – Ansible date variable

The command ansible localhost -m setup basically says run the setup module against localhost, and the setup module gathers the facts that you see in the output.

When you run the echo command these facts dont exist since the setup module wasnt run. A better method to testing things like this would be to use ansible-playbook to run a playbook that looks something like this:

- hosts: localhost
  tasks:
      - debug: var=ansible_date_time

      - debug: msg=the current date is {{ ansible_date_time.date }}

Because this runs as a playbook facts for localhost are gathered before the tasks are run. The output of the above playbook will be something like this:

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

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [debug var=ansible_date_time] *******************************************
ok: [localhost] => {
    ansible_date_time: {
        date: 2015-07-09,
        day: 09,
        epoch: 1436461166,
        hour: 16,
        iso8601: 2015-07-09T16:59:26Z,
        iso8601_micro: 2015-07-09T16:59:26.896629Z,
        minute: 59,
        month: 07,
        second: 26,
        time: 16:59:26,
        tz: UTC,
        tz_offset: +0000,
        weekday: Thursday,
        year: 2015
    }
}

TASK: [debug msg=the current date is {{ ansible_date_time.date }}] **********
ok: [localhost] => {
    msg: the current date is 2015-07-09
}

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

The lookup module of ansible works fine for me. The yml is:

- hosts: test
  vars:
    time: {{ lookup(pipe, date -d 1 day ago +%Y%m%d) }}

You can replace any command with date to get result of the command.

fact – Ansible date variable

Note that the ansible command doesnt collect facts, but the ansible-playbook command does. When running ansible -m setup, the setup module happens to run the fact collection so you get the facts, but running ansible -m command does not. Therefore the facts arent available. This is why the other answers include playbook YAML files and indicate the lookup works.

Leave a Reply

Your email address will not be published.