---
# this is a demo of conditional executions using 'only_if', which can skip
# certain tasks on machines/platforms/etc where they do not apply.  This is
# the more 'raw' version of the 'when' statement, most users will be able to
# use 'when' directly.  'only_if' is an older feature, and useful for when
# you need more advanced expression control.

- hosts: all
  user: root

  vars:
     favcolor: "red"
     ssn: 8675309

# Below we're going to define some expressions.
#
# Not only can we assign variables for reuse, but we can also assign conditional
# expressions.  By keeping these in 'vars', the task section remains
# extraordinarily clean, and not littered with programming language
# constructs -- so it's easily skimmed by humans.
#
# Remember to quote any variables if they are not numbers!
#
# Interesting fact: aside from the $variables, these expressions are actually
# tiny bits of Python.  They are evaluated in the context of each host, so different
# steps can be skipped on different hosts!  They should evaluate to either True
# or False

     is_favcolor_blue: "'$favcolor' == 'blue'"
     is_centos: "'$facter_operatingsystem' == 'CentOS'"

# NOTE:
#
# setup module values, facter and ohai variables can be used in only_if statements too
# ex:  "'$facter_operatingsystem' == 'CentOS'", which bubble up automatically
# from the managed machines.  This example doesn't do that though.

  tasks:

     - name: "do this if my favcolor is blue"
       action: shell /bin/false
       only_if: '$is_favcolor_blue'

     - name: "do this if my favcolor is not blue"
       action: shell /bin/true
       only_if: 'not ($is_favcolor_blue)'

