# conditionals in meta includes

**URL:** <https://forum.ansible.com/t/conditionals-in-meta-includes/15782>\
**Category:** Ansible Project\
**Created:** [July 25, 2014, 7:04pm UTC](https://forum.ansible.com/t/conditionals-in-meta-includes/15782 "2014-07-25T19:04:28Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michael\_Dur](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@Michael\_Dur](https://forum.ansible.com/u/Michael_Dur)\
**Post date:** [July 25, 2014, 7:04pm UTC](https://forum.ansible.com/t/conditionals-in-meta-includes/15782/1 "2014-07-25T19:04:28Z")

</div>

I have a role which is just a meta playbook for installing many packages.  
I only want these to run once during an ansible run since interacting with the package manager is slow.  
I thought I’d register a variable and check it, however I’m getting an error.

TASK: [feature/zypper | remove non-seas repos] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

fatal: [[tr808.seas.upenn.edu](http://tr808.seas.upenn.edu/)] =\> error while evaluating conditional: ( common\_has\_executed == ‘false’)

Here the relevant files:

common/tasks/main.yml

---

<div class="post-metadata">

**Author:** ![Michael\_Dur](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@Michael\_Dur](https://forum.ansible.com/u/Michael_Dur)\
**Post date:** [July 25, 2014, 7:29pm UTC](https://forum.ansible.com/t/conditionals-in-meta-includes/15782/2 "2014-07-25T19:29:12Z")

</div>

I’ve discovered two things I’ll post here:

1. For the time being you can toggle failing on undefined variables in the ansible config

2. It is better to use ‘is defined’ or ‘is not defined’ rather than comparison in this use case.

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [July 25, 2014, 7:30pm UTC](https://forum.ansible.com/t/conditionals-in-meta-includes/15782/3 "2014-07-25T19:30:35Z")

</div>

The correct pattern would be:

when: foo is defined and foo

---

<div class="post-metadata">

**Author:** ![Michael\_Dur](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@Michael\_Dur](https://forum.ansible.com/u/Michael_Dur)\
**Post date:** [July 25, 2014, 7:50pm UTC](https://forum.ansible.com/t/conditionals-in-meta-includes/15782/4 "2014-07-25T19:50:26Z")

</div>

Good. And since I’m suppressing additional runs of this playbook, is there a way to suppress the output as well (that is the many lines of skipped stuff).

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [July 25, 2014, 8:07pm UTC](https://forum.ansible.com/t/conditionals-in-meta-includes/15782/5 "2014-07-25T20:07:05Z")

</div>

The best way to avoid skipped messages is to use things like “group\_by” when relevant, so you don’t run RedHat specific tasks on Debian systems and have to watch the skipped.

When that is not practical, there is the following setting:

[http://docs.ansible.com/intro\_configuration.html#display-skipped-hosts](http://docs.ansible.com/intro_configuration.html#display-skipped-hosts)
