# Using "when" in a template file

**URL:** <https://forum.ansible.com/t/using-when-in-a-template-file/34704>\
**Category:** Ansible Project\
**Created:** [March 1, 2021, 6:37pm UTC](https://forum.ansible.com/t/using-when-in-a-template-file/34704 "2021-03-01T18:37:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![harry\_devine](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/harry_devine/32/5293_2.png) [@harry\_devine](https://forum.ansible.com/u/harry_devine)\
**Post date:** [March 1, 2021, 6:37pm UTC](https://forum.ansible.com/t/using-when-in-a-template-file/34704/1 "2021-03-01T18:37:44Z")

</div>

We have a playbook that will start the chronyd service periodically. If the service is down, it will be started. This causes the “changed” condition to be set to 1. This all works well. What I need to figure out is how can I use the “when: chrony.changed == 1” in our template file that we use to email our admins.

Currently, the template will send the service state for ALL hosts in the play. How can I only include those that were changed?

Service Check

Date generated: {{ ansible\_date\_time.month }}/{{ ansible\_date\_time.day }}/{{ ansible\_date\_time.year }} {{ ansible\_date\_time.time }}

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [March 1, 2021, 7:20pm UTC](https://forum.ansible.com/t/using-when-in-a-template-file/34704/2 "2021-03-01T19:20:30Z")

</div>

{% if chrony is changed %}  
{% for i in play\_hosts | sort %}  
Host: {{ i }}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chronyd state: {{ hostvars[i]['chrony']['state'] }}  
{% endfor %}  
{% endif %}

---

<div class="post-metadata">

**Author:** ![harry\_devine](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/harry_devine/32/5293_2.png) [@harry\_devine](https://forum.ansible.com/u/harry_devine)\
**Post date:** [March 1, 2021, 8:00pm UTC](https://forum.ansible.com/t/using-when-in-a-template-file/34704/3 "2021-03-01T20:00:28Z")

</div>

Sorry, same issue. I have 2 hosts in my play. I stopped chronyd on the first host. The service was started on server 1 and didn’t need to be started on server 2. The email that came over has both hosts listed in it still.

[root@ansible ~]#ansible-playbook check\_services.yml -K  
BECOME password:

PLAY [services]\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

TASK [setup] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [server1]  
ok: [server2]

TASK [Start chronyd if not started] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
changed: [server1]  
ok: [server2]

TASK [Prepare report] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
changed: [server1]

TASK [Send report to admins] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
ok: [server1]

TASK [Delete local output file] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
changed: [server1]

PLAY RECAP \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
server1 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0  
server2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Email:

Service Check

Date generated: 03/01/2021 14:54:03

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [March 1, 2021, 8:12pm UTC](https://forum.ansible.com/t/using-when-in-a-template-file/34704/4 "2021-03-01T20:12:16Z")

</div>

Ah, misinterpreted what you wanted, just put the if inside the for and  
base it on the hostvar

{% for i in play\_hosts | sort %}  
{% if hostvars[i]['chrony'] is changed %}  
Host: {{ i }}  
chronyd state: {{ hostvars[i]['chrony']['state'] }}  
{% endif %}  
{% endfor %}

But you should really move to a 2nd play on hosts: localhost so you  
wont send report X number of hosts that changed

---

<div class="post-metadata">

**Author:** ![harry\_devine](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/harry_devine/32/5293_2.png) [@harry\_devine](https://forum.ansible.com/u/harry_devine)\
**Post date:** [March 1, 2021, 8:26pm UTC](https://forum.ansible.com/t/using-when-in-a-template-file/34704/5 "2021-03-01T20:26:52Z")

</div>

That worked great! Thank you very much!

Harry
