# Creation date playbook with correct json query in yml file

**URL:** <https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739>\
**Category:** Ansible Project\
**Created:** [June 15, 2022, 9:10am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739 "2022-06-15T09:10:08Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nipun\_Jain](https://avatars.discourse-cdn.com/v4/letter/n/5f9b8f/32.png) [@Nipun\_Jain](https://forum.ansible.com/u/Nipun_Jain)\
**Post date:** [June 15, 2022, 9:10am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739/1 "2022-06-15T09:10:08Z")

</div>

Hi,  
I am trying to fetch the json data from ami info in the existing yml using ansible.Now i am getting errors regarding json query format in number expression.  
I need help with proper json query under set fact so that the indentation is maintained.Please suggest how this can be achieved.  
I am using below code for this :-

---

<div class="post-metadata">

**Author:** ![Nipun\_Jain](https://avatars.discourse-cdn.com/v4/letter/n/5f9b8f/32.png) [@Nipun\_Jain](https://forum.ansible.com/u/Nipun_Jain)\
**Post date:** [June 16, 2022, 4:19am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739/2 "2022-06-16T04:19:28Z")

</div>

Hi Team,  
Looking forward to any input.

---

<div class="post-metadata">

**Author:** ![dnmvisser](https://avatars.discourse-cdn.com/v4/letter/d/8e8cbc/32.png) [@dnmvisser](https://forum.ansible.com/u/dnmvisser)\
**Post date:** [June 16, 2022, 7:11am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739/3 "2022-06-16T07:11:02Z")

</div>

To start with You cannot use operators like \> \< etc on a string like ‘2022-06-10’.  
Can you be more clear about what you want to achieve?

---

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [June 16, 2022, 8:47am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739/4 "2022-06-16T08:47:04Z")

</div>

> &nbsp;&nbsp;&nbsp;&nbsp;- name: Gather AMI Info  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;amazon.aws.ec2\_ami\_info:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owners: self  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;region: us-east-1  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filters:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state: available  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;register: result

Let's assume the data below for testing

&nbsp;&nbsp;&nbsp;&nbsp;result:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;images:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: app1  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation\_date: '2022-06-13T19:22:13.000Z'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: app2  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation\_date: '2022-06-14T19:22:13.000Z'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: app3  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;creation\_date: '2022-06-15T19:22:13.000Z'

> &nbsp;&nbsp;&nbsp;&nbsp;- name: Set fact date from last {{ec2\_input\_day}} days  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run\_once: yes  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ec2\_f\_date: "{{ lookup('pipe','date \"+%Y-%m-%d\"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d "{{ec2\_input\_day}} day ago\"') }}"

To get the current date use filter \*strftime\*, e.g.

&nbsp;&nbsp;&nbsp;&nbsp;ec2\_f\_date: "{{ '%Y-%m-%d %H:%M:%S'|strftime }}"

gives

&nbsp;&nbsp;&nbsp;&nbsp;ec2\_f\_date: '2022-06-16 10:29:58'

> &nbsp;&nbsp;&nbsp;&nbsp;- name: Set fact date from {{ec2\_input\_day}} days using amis filters  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run\_once: yes  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set\_fact:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ec2\_f\_amis: "{{ result | json\_query(\"item[?creation\_date\<= \" +  
> ec2\_f\_date + \"]\") }}"  
> &nbsp;&nbsp;&nbsp;&nbsp;- debug:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var: ec2\_f\_amis

Use filter \*to\_datetime\*. See "Handling dates and times"  
[https://docs.ansible.com/ansible/latest/user\_guide/playbooks\_filters.html#handling-dates-and-times](https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#handling-dates-and-times)

Given

&nbsp;&nbsp;&nbsp;&nbsp;ec2\_input\_day: '2'

In the loop, calculate the difference in days and evaluate the  
condition, e.g.

&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg: "Age of {{ item.name }}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is greater than or equal {{ ec2\_input\_day }} day(s)"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop: "{{ result.images }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when: days|int \>= ec2\_input\_day|int  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vars:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;days: "{{ (ec2\_f\_date|to\_datetime -  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.creation\_date|  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to\_datetime('%Y-%m-%dT%H:%M:%S.000Z')).days }}"

will display the first image. The other two will be skipped

&nbsp;&nbsp;&nbsp;&nbsp;msg: Age of app1 is greater than or equal 2 day(s)

---

<div class="post-metadata">

**Author:** ![Nipun\_Jain](https://avatars.discourse-cdn.com/v4/letter/n/5f9b8f/32.png) [@Nipun\_Jain](https://forum.ansible.com/u/Nipun_Jain)\
**Post date:** [June 16, 2022, 8:48am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739/5 "2022-06-16T08:48:36Z")

</div>

Hi Dick,  
I understand your point …I want to achieve the list of amis which is based on creation date.For example i want to print out list of amis for last 3 days and the output showing only 3 days before amis info…Thats the aim of above script.  
I hope you understand my problem situation.Imagine you have 100 amis so u want to get info of particular date of amis like filters.

---

<div class="post-metadata">

**Author:** ![Nipun\_Jain](https://avatars.discourse-cdn.com/v4/letter/n/5f9b8f/32.png) [@Nipun\_Jain](https://forum.ansible.com/u/Nipun_Jain)\
**Post date:** [June 16, 2022, 8:52am UTC](https://forum.ansible.com/t/creation-date-playbook-with-correct-json-query-in-yml-file/36739/6 "2022-06-16T08:52:24Z")

</div>

Thank you so much Vladimir Botka.And it works now.
