Ansible: When Variable Is – Defined | Exists | Empty | True

In Ansible playbooks, it is often a good practice to test if a variable exists and what is its value.

Particularity this helps to avoid different “VARIABLE IS NOT DEFINED” errors in Ansible playbooks.

In this context there are several useful tests that you can apply using Jinja2 filters in Ansible.

In this article, i’ll show the examples of how to test a variable in Ansible: if it exists or not, if it is empty or not and if it is set to True or False.

Cool Tip: Test if the variable in Jinja2 is Empty | Exists | Defined | True. Read more →

Ansible ‘When’ Statement: Check If Variable Is…

Check if Ansible variable is defined (exists):

tasks:

- shell: echo "The variable 'foo' is defined: '{{ foo }}'"
  when: foo is defined

- fail: msg="The variable 'bar' is not defined"
  when: bar is undefined

Check if Ansible variable is empty:

tasks:
- fail: msg="The variable 'bar' is empty"
  when: bar|length == 0

- shell: echo "The variable 'foo' is not empty: '{{ foo }}'"
  when: foo|length > 0

Check if Ansible variable is defined and not empty:

tasks:

- shell: echo "The variable 'foo' is defined and not empty"
  when: (foo is defined) and (foo|length > 0)

- fail: msg="The variable 'bar' is not defined or empty"
  when: (bar is not defined) or (bar|length == 0)

Cool Tip: Ansible Playbook – Print Variable & List All Variables! Read more →

Check if Ansible variable is True or False:

tasks:

- shell: echo "The variable 'foo' is 'True'"
  when: foo|bool == True

- shell: echo "The variable 'bar' is 'False'"
  when: bar|bool == False

2 Replies to “Ansible: When Variable Is – Defined | Exists | Empty | True”

  1. Maybe “when: for|length > 0” -> “when: foo|length > 0”..
    btw. can True|False be replaced with 1|0?

    1. Thanks. Yes, True|False be replaced with 1|0.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.